我正在用 C/C++ 编写,我想创建很多大于 100,000 的随机数。我该怎么做呢?和rand();
你不会那样做rand
,但使用较新的 C++ 附带的适当随机数生成器,请参见例如cppreference.com http://en.cppreference.com/w/cpp/numeric/random.
const int min = 100000;
const int max = 1000000;
std::default_random_engine generator;
std::uniform_int_distribution<int> distribution(min,max);
int random_int = distribution(generator); // generate random int flat in [min, max]
不要忘记正确播种你的发电机。
以上我的意思是rand
不是“正确的”伪 RNG,因为它通常存在许多缺点。在最好的情况下,它缺乏抽象,因此从不同的分布中进行选择变得困难且容易出错(在网络上搜索例如“随机范围模数”)。此外,更换用于生成随机数的底层引擎在设计上也是不可能的。在不太理想的情况下rand
因为伪 RNG 无法为许多/大多数用例提供足够长的序列长度。使用 TR1/C++11 生成高质量的随机数非常容易,可以始终使用正确的解决方案,因此当出现模糊的错误时,无需首先担心所使用的伪 RNG 的质量。微软的STL做了一个演讲,给出了很好的总结谈话 https://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful关于 GoingNative2013 上的主题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)