我需要在指定的时间间隔内生成随机数,[max; min].
此外,随机数应该在区间上均匀分布,而不是位于特定点.
Currenly我正在生成:
for(int i=0; i<6; i++)
{
DWORD random = rand()%(max-min+1) + min;
}
Run Code Online (Sandbox Code Playgroud)
从我的测试中,只有一点产生随机数.
Example
min = 3604607;
max = 7654607;
Run Code Online (Sandbox Code Playgroud)
随机数生成:
3631594
3609293
3630000
3628441
3636376
3621404
Run Code Online (Sandbox Code Playgroud)
从下面的答案:好的,RAND_MAX是32767.我在C++ Windows平台上.有没有其他方法来生成具有均匀分布的随机数?
我编写了传统的C++代码,用于生成统一的随机数和高斯分布.它实现了George Marsaglia博士非常快的算法.(我正在使用它们为蒙特卡洛高维集成生成skazillions样本.)
我认为重新考虑生成器和分发以使用新的C++ 11 std :: random方案是个好主意.
任何人都可以指向我的std :: random的教程或一个很好的参考,其中包括如何扩展它的必要信息?示例代码是理想的.
UPDATE.谢谢大家的帮助.我现在已经为Visual C++ 2010附带的std :: normal_distribution写了一个替代品.在我的机器上,当由默认引擎提供时,替换速度提高了26%.我有点失望,差异不大,但嘿,这是我的问题.:-)