标准rand()
函数给出的数字对我来说不够大:我需要unsigned long long
那些。我们如何获得非常大的随机数?我尝试修改一个简单的哈希函数,但它太big,运行时间太长,并且永远不会产生小于 1e5 的数字!
你可以轻松地做到这一点std::uniform_int_distribution<unsigned long long> http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution.
简单的示例代码(取自here http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution,修改后使用unsigned long long
):
#include <random>
#include <iostream>
int main()
{
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<unsigned long long> dis(lowerBorder, upperBorder);
for (int n=0; n<10; ++n)
std::cout << dis(gen) << ' ';
std::cout << '\n';
}
请注意,此处出于演示目的而完成的梅森扭曲器的播种并不完美,例如请参阅here https://codereview.stackexchange.com/questions/109260/seed-stdmt19937-from-stdrandom-device.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)