【问题标题】:Always repeated numbers given by rand()rand() 给出的数字总是重复
【发布时间】:2011-06-19 01:09:22
【问题描述】:

我使用 rand() 进行查看,它总是连续多次给我相同的值。我尝试在循环之前使用 srand(time(NULL)) ,但它没有帮助......

【问题讨论】:

标签: c random


【解决方案1】:

通常,你得到重复数字的唯一原因是如果你使用 srand within 循环具有相同的种子值(time(0) 会给你紧密循环中的相同值)。

当然,一个真正的随机数序列可以给你重复的数字。如果您操作不当,即使不这样做也可能会重复给您相同的数字。

例如,如果算法倾向于在返回值的低端进行更改,rand() / 100000 可能不是一件好事,因为100000, 164534, 186410, 199999 的rand() 序列将为您提供@987654326 @(如果连续数字之间的变化是您所重视的,那么rand() % 100000 可能是更好的选择)。

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

【讨论】:

  • targets[i] = ((double)rand()* 1.0 * NUM_BLOCKS / RAND_MAX);
  • 这就是我调用函数的方式。
  • 问题是我没有得到很多 1。我得到的数字是随机的,但重复了几次。我还注意到第一个总是与其他人不同。第二个总是重复至少四次......
猜你喜欢
  • 1970-01-01
  • 2011-03-31
  • 2021-09-27
  • 2013-03-11
  • 2019-07-15
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
相关资源
最近更新 更多