我在外观中使用rand(),它总是连续几次给我相同的值。我试图在循环之前使用srand(time(NULL)),但它没有帮助......
答案 0 :(得分:4)
通常,您获得重复数字的唯一原因是,如果您使用相同种子值的循环中使用srand
(并且time(0)
将在紧密的循环中给你相同的值。)
当然,真正的随机数序列可以给你重复的数字。即使是那些不这样做的人,如果你操作得不好,也会反复给你相同的数字。
例如,如果算法倾向于支持返回值低端的更改,那么rand() / 100000
可能是不太好的事情,因为rand()
序列为100000, 164534, 186410, 199999
会给你1, 1, 1, 1
(rand() % 100000
在这种情况下,如果连续数字之间的变化是你的价值,那么它可能是更好的选择。
当然,如果没有看到您的实际代码,这样的猜测可能是我们能做的最好的。与大多数问题报告一样,您最好的一点是提供一个展示问题的小型完整样本。