【发布时间】:2017-08-17 19:41:52
【问题描述】:
我看到一个 C++ 程序接受种子和状态来设置 std::default_random_engine,这是 std::linear_congruential_engine 的 typedef(至少在我的系统上)。
seed() 方法用于设置初始种子,operator>> 用于状态。
我知道播种随机数生成器 (RNG) 的原理,但使用它可以与它的状态互换。
【问题讨论】:
-
Seed == 起始值以生成基础(生成初始状态)。 State == 表示生成器当前所在的位置。
-
对于线性同余随机引擎,种子确实是引擎的第一个状态(因为引擎本身是一个整数),但是对于例如mersenne twister 引擎(在标准中),状态是整数序列,而种子是单个值,第一个状态是使用种子计算的。