我在 while
循环中有一个随机生成的数字。因为我在运行它时使用 time(NULL)
播种它,所以我得到了一个相似结果流,同时我希望它更“异构”.
函数如下:
while(1) {
srand((unsigned int) time(NULL)); // Seed
double chance = random() / (double) RAND_MAX;
if (chance <= 0.95)
printf("All ok.\n");
else
printf("ERROR\n");
}
例如,结果如下:
...
All ok.
All ok.
All ok.
All ok.
All ok.
ERROR
ERROR
ERROR
ERROR
ERROR
All ok.
All ok.
All ok.
All ok.
All ok.
...
如何使结果更加彼此独立?
最佳答案
不要在循环中随机播种。通常,您只想播种一次:
srand((unsigned int) time(NULL)); // Seed
while(1) {
double chance = random() / (double) RAND_MAX;
//...
}
计算机的速度足以在 time() 函数的分辨率内多次运行此循环,因此您最终会多次重新播种到相同的数字。
参见 https://stackoverflow.com/a/822368/2721883和 https://stackoverflow.com/a/39475626/2721883有关在 C 中生成随机数的更多信息。
关于c - 如何使while循环中的随机数相互独立?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48323557/