- 此问题在此处已有答案**:
how to create an array of non-repeated rand numbers(4个答案)
Unique (non-repeating) random numbers in O(1)?(22个答案)
2天前关闭.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
srand(time(NULL));
int i = 0;
int dizi[20];
for (i = 0; i < 20; i++) {
dizi[i] = rand() % 20;
}
for (i = 0; i < 20; i++) {
printf("%d\n", dizi[i]);
}
return 0;
}
if else结构是否足以解决这个问题,或者我需要对rand函数做些什么?
1条答案
按热度按时间vwoqyblh1#
如果你想用从0到19的随机数填充一个20元素的数组而不重复,那么通常用0到19填充,然后随机交换索引。
https://godbolt.org/z/avKGozfoh
正如在评论中指出的,上面的例子代表了一个幼稚的算法,使用Knuth/Fisher-Yates algorithm的忠实实现,我们得到了一个均匀分布的结果。
https://godbolt.org/z/qsfYa8r54