c++ - 有什么办法可以得到 0 - 10 亿之间的随机数吗?

标签 c++ algorithm random

我现在不关心效率。我只是在寻找一种可以生成从 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/

相关文章:

c++ - 用 if 语句检测蓝线

algorithm - 了解自下而上的切杆实现

algorithm - 组合问题,房间配置

c++ - 从时间生成 'random' 数字?

c++ - 存储库的路径。需要最佳实践

c++ - OpenGL nvoglv32.dll 错误

c++ - 在 C++ 中处理 xml 的好方法

algorithm - MATLAB 中的 N x N 单位矩阵

random - GO:操纵随机生成的 float64

objective-c - 使用 arc4random 随机化 float ?