使用Mersenne twister在C中生成随机数

RIc*_*ams 0 c random

我想使用Mersenne twister在c中生成随机数(0到1之间).我的代码如下:

for (i=1; i<=10;i++){
  srand(time(NULL));
  a=rand();
  b=rand();
  c=rand();  
}
Run Code Online (Sandbox Code Playgroud)

即在for循环的每次迭代中,随机数将以当前时间播种,并且使用此种子我将在0和1之间生成3个随机数.如何使用mersenne twister?

Seb*_*olm 7

经常重新种植RNG似乎不是一个好主意.最有可能的是,每次都会使用相同的时间戳为它播种,在这种情况下,您将在每次循环迭代中获得相同的3个随机数.你应该选择种子,然后再使用它.

Mersenne Twister的C实现可在此处获得.

  • 您每次都以相同的值重新接种PRNG,从而颠覆您的意图.如果你打算使用一段时间,你将需要使用其中包含纳秒信息的东西,而不是像`time()`这样的整秒.即使这样,你也需要确保种子不同的时间已经过去了. (7认同)