我现在不关心效率。我只是在寻找一种可以生成从 0 到 10 亿的随机数的好方法。我试过做 rand() * rand() 但它只给我估计大于大约 1000 万的数字。我希望范围更加分散。有人有什么建议吗?
最佳答案
当然,只需使用现代 <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';
(来自 here,稍微修改以执行 OP 需要的操作)将执行您需要的操作。
如果需要,还可以使用浮点值的模拟函数。
备注:在极少数情况下,您的平台的 int
不能容纳 10 亿,或者如果您需要更大的数字,您也可以使用更大的整数类型,如下所示:
std::uniform_int_distribution<std::int64_t> dis(1, 1000000000);
另请注意,此处介绍的 mt 播种并不是最佳选择;看我的问题here获取更多信息。
关于c++ - 有什么办法可以得到 0 - 10 亿之间的随机数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31015456/