【问题标题】:Seeding the random number generator播种随机数生成器
【发布时间】:2014-04-06 06:28:18
【问题描述】:

我不记得看到任何程序调用 srand 除了srand(time(NULL))。在什么情况下会用其他值调用srand?

【问题讨论】:

  • 如果您想要可重复的结果,您可以使用常量种子。
  • 或者,如果您想要几乎同时发生的程序运行的不同种子(在这种情况下,您可能还会使用更好的 RNG)。无论如何,我见过将 PID 或其他东西混入种子中的程序。
  • 使用<random> 标头,rand 不应该再使用了。

标签: c++ c random


【解决方案1】:

函数rand() 不返回随机数。它是一个 pseudo 随机生成器。这就是为什么当您使用相同的参数调用srand() 时会得到相同的数字序列。用当前时间调用srand()实际上是唯一的随机项。你从rand() 得到的数字只是乱码。

当您想要replay 一个序列时,您将使用一个可预测或恒定的值调用srand(),一次又一次地调试具有相同序列的功能。

【讨论】:

    猜你喜欢
    • 2015-03-14
    • 2019-07-16
    • 2016-07-22
    • 1970-01-01
    • 2013-09-24
    • 2010-10-05
    • 2010-09-30
    • 2012-08-10
    相关资源
    最近更新 更多