Dav*_*uez 3 c++ random algorithm
我现在不关心效率.我只是在找一个体面的方式,我可以生成0到10亿的随机数.我已经尝试过做rand()*rand(),但它只给了我估计超过大约1000万的数字.我希望范围更加分散.有人有什么建议吗?
Bau*_*gen 11
当然,只需使用<random>C++ 的现代设施:
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(1, 1000000000);
for (int n=0; n<10; ++n)
std::cout << dis(gen) << ' ';
std::cout << '\n';
Run Code Online (Sandbox Code Playgroud)
(从这里,稍微修改以做OP需要的)将做你需要的.
如果需要,还存在浮点值的模拟函数.
备注:在不太可能的情况下,您的平台int不能容纳10亿,或者如果您需要更大的数字,您还可以使用更大的整数类型,如下所示:
std::uniform_int_distribution<std::int64_t> dis(1, 1000000000);
Run Code Online (Sandbox Code Playgroud)
另请注意,此处显示的播种mt不是最佳的; 在这里查看我的问题以获取更多信息