所以我刚刚学习 C,我想知道如何防止使用 rand() 函数随机化的变量重复相同的数字。我有一个脚本,它简单地随机化并在 for 循环中打印变量 4 次。我怎样才能使变量在每次使用 rand() 函数后都不会获得相同的数字?
#include <stdio.h>
#include <stdlib.h>
int randomInt;
int main()
{
srand(time(0));
for (int i = 0; i < 4; ++i) {
randomInt = rand() % 4;
printf("%d\n", randomInt);
}
return 0;
}
最佳答案
在大多数机器上,int
是 32 位。因此,在 232 次迭代之后,您肯定会得到一些重复(而且可能早很多)。
如果您将自己限制在更少的循环中,请考虑例如保留以前遇到的随机数数组(或一些哈希表,或一些二叉树,或其他一些容器)。
对于只重复 4 次的循环,保留一个(最多 4-1)个先前发出的数字的数组非常简单,并且足够高效。
另请阅读 pigeonhole principle .
关于C 如何防止随机变量重复相同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48590853/