求java算法:如何生成一组不重复的随机数(比如1到10)Random类生成的随机数都会发生重复,但我想求一个随机数算法,不会产生重复的数(算法中不要用if来判定该随机数是否已出现过,否则执行效率
来源:学生作业帮助网 编辑:六六作业网 时间:2025/02/07 16:53:56
求java算法:如何生成一组不重复的随机数(比如1到10)Random类生成的随机数都会发生重复,但我想求一个随机数算法,不会产生重复的数(算法中不要用if来判定该随机数是否已出现过,否则执行效率
求java算法:如何生成一组不重复的随机数(比如1到10)
Random类生成的随机数都会发生重复,但我想求一个随机数算法,不会产生重复的数(算法中不要用if来判定该随机数是否已出现过,否则执行效率会十会低下:举例来说生成范围是1-10,同时生成十个随机数,这样1-10每个只出现一次;如果简单只用if判定,为了生成这十个随机数,循环可能就要不只十次,可能是100,1000次,效果不好);求高人指点合适的算法;
求java算法:如何生成一组不重复的随机数(比如1到10)Random类生成的随机数都会发生重复,但我想求一个随机数算法,不会产生重复的数(算法中不要用if来判定该随机数是否已出现过,否则执行效率
int table[] = [0,1,2,3,4,5,6,7,8,9];
void swap(int* a,int* b) { // 交换两个元素
int c = *a;
*a = *b;
*b = c;
}
void rand_n(int len,n) { // 打乱table中各个元素之间的顺序
for (int i = 0; i < len; i++) {
swap(&table[i],&table[rand() / len]);
}
for (int i = 0; i < n; i++) { // 输出前n个元素
printf("%d\n",table[i]);
}
}
int main() {
rand_n(sizeof(table)/sizeof(int),4);
}