【发布时间】:2011-06-19 01:09:22
【问题描述】:
我使用 rand() 进行查看,它总是连续多次给我相同的值。我尝试在循环之前使用 srand(time(NULL)) ,但它没有帮助......
【问题讨论】:
-
请显示代码。
-
@dreamlax:正是我的想法。
-
请编辑您的问题(准确而简洁),不要仅在 cmets 中添加额外信息。
我使用 rand() 进行查看,它总是连续多次给我相同的值。我尝试在循环之前使用 srand(time(NULL)) ,但它没有帮助......
【问题讨论】:
通常,你得到重复数字的唯一原因是如果你使用 srand within 循环具有相同的种子值(time(0) 会给你紧密循环中的相同值)。
当然,一个真正的随机数序列可以给你重复的数字。如果您操作不当,即使不这样做也可能会重复给您相同的数字。
例如,如果算法倾向于在返回值的低端进行更改,rand() / 100000 可能不是一件好事,因为100000, 164534, 186410, 199999 的rand() 序列将为您提供@987654326 @(如果连续数字之间的变化是您所重视的,那么rand() % 100000 可能是更好的选择)。
当然,在没有看到你的实际代码的情况下,这样的猜测可能是我们能做的最好的事情。与大多数问题报告一样,您最好的一点是提供一个小的完整样本来展示问题。
【讨论】: