![](/img/trans.png)
[英]How to use Mersenne Twister random number generation library in C?
[英]Random number generation in C using Mersenne twister
我想使用Mersenne twister在c中生成随机数(0到1之间)。 我的代码如下:
for (i=1; i<=10;i++){
srand(time(NULL));
a=rand();
b=rand();
c=rand();
}
也就是说,在for循环的每次迭代中,随机数将使用当前时间进行播种,使用该种子,我将生成3个介于0和1之间的随机数。
经常重新播种RNG似乎不是一个好主意。 很有可能每次都用相同的时间戳作为种子,在这种情况下,每次循环迭代将获得相同的3个随机数。 您应该宁愿播种一次,然后使用它。
此处提供Mersenne Twister的C实现。
塞巴斯蒂安所说的是准确的,您不会注意到每次迭代之间time(NULL)
值的任何差异,种子几乎总是相同的:
经常重新播种RNG似乎不是一个好主意。 很有可能每次都用相同的时间戳作为种子,在这种情况下,每次循环迭代将获得相同的3个随机数。 您应该宁愿播种一次,然后使用它。
但也许您可以尝试一下,以获得更好的结果
for (int i=1; i<=10;i++){
srand(time(NULL)*i*17); //Or any combination of operations with 'i' included
a = rand();
b = rand();
c = rand();
}
在每次迭代中,您将获得略有不同的种子 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.