总是由rand()给出的重复数字

时间:2011-02-01 05:03:31

标签: c random

我在外观中使用rand(),它总是连续几次给我相同的值。我试图在循环之前使用srand(time(NULL)),但它没有帮助......

1 个答案:

答案 0 :(得分:4)

通常,您获得重复数字的唯一原因是,如果您使用相同种子值的循环中使用srand (并且time(0) 在紧密的循环中给你相同的值。)

当然,真正的随机数序列可以给你重复的数字。即使是那些不这样做的人,如果你操作得不好,也会反复给你相同的数字。

例如,如果算法倾向于支持返回值低端的更改,那么rand() / 100000可能是不太好的事情,因为rand()序列为100000, 164534, 186410, 199999会给你1, 1, 1, 1rand() % 100000在这种情况下,如果连续数字之间的变化是你的价值,那么它可能是更好的选择。

当然,如果没有看到您的实际代码,这样的猜测可能是我们能做的最好的。与大多数问题报告一样,您最好的一点是提供一个展示问题的小型完整样本。