【发布时间】:2013-10-13 18:34:29
【问题描述】:
我需要实现一个好的 RNG,我想 Mersenne Twister 可能对我有好处。
我在任何地方都没有找到一个有效的 C++ 实现,我是一个糟糕的谷歌搜索者还是真的不容易找到?!
我之前试过rand():
srand((unsigned)time(0));
for (int i = 0; i < 9; i++) {
random = rand();
cout<<random;
}
我不知道为什么,但是随机变量总是相同的数字.....但是如果我添加一个Sleep(1000),它就可以了!像这样:
srand((unsigned)time(0));
for (int i = 0; i < 9; i++) {
random = rand();
cout<<random;
Sleep(1000);
}
所以我决定尝试 Mersenne Twister...有人能找到解决方案吗(因为我需要找到非常多的随机数,所以我不能使用 Sleep(1000),这需要很长时间!)或帮助我实现 Mersenne Twister 或另一个好的 RNG。
感谢和抱歉我的英语不好......
【问题讨论】:
-
你是个糟糕的 googler,因为在 standard library 和 boost 中有一个 mersene twister 引擎
-
我认为您在循环中也确实有 srand() 调用。通常没有理由添加 Sleep() 会影响结果,除非在循环中也调用了 srand()。