我知道时间(0)通常用于播种随机数生成器,并且当程序每秒运行一次以上时它只会成为一个问题.我想知道在生成随机数时要考虑哪些更好的种子.我在Windows上阅读了有关GetTickCount,timeGetTime和QueryPerformanceCounter的内容.几乎所有的操作都能满足这些要求,还是有更好的播种选择?
这是一个使用boost库的快速代码示例:
#include <iostream>
#include <boost/random.hpp>
using namespace std;
using namespace boost;
int main()
{
mt19937 randGen(42);
uniform_int<> range(0,100);
variate_generator<mt19937&, uniform_int<> > GetRand(randGen, range);
for (int i = 0; i < 30; ++i)
cout << GetRand() << endl;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Lua制作http://freespace.virgin.net/hugo.elias/models/m_perlin.htm中描述的Perlin噪声算法.但是,它不能正常工作,因为Lua不支持按位运算符,这对于该页面上的伪随机数函数是必需的.我尝试使用randomseed(),但我能想出的所有内容都只是制作了奇怪的模式.我需要一个伪随机数生成器,当给定参数x,y和随机种子时,它将生成介于-1和1之间的数字.伪代码很好.
谢谢!