随机数生成器的种子和状态之间有什么区别?

jjd*_*doe 4 c++ random

我看到一个C++程序接受种子和状态来设置a std::default_random_engine,这是一个typedef std::linear_congruential_engine(至少在我的系统上).该seed()方法用于设置初始种子和operator>>状态.

我知道播种随机数发生器(RNG)的原理,但是它可以与它的状态互换.

小智 6

种子是用于初始化生成器的值,状态是每次调用后生成随机数的生成器的当前状态.对于非常简单的随机数生成器,例如线性同余生成器,种子和状态是相同的(或者至少存储在同一个变量中),但它们当然不必存在.

  • 通过"起始值",这不是生成的第一个数字,而是指定生成随机数的序列/模式的方式. (3认同)
  • @jdoe这完全取决于RNG的实现 - RNG将记住其初始种子完全可能(并且可能用于调试,如果没有别的话). (2认同)