使用库生成指定范围随机数是C++中推荐的方法,通过random_device获取种子,mt19937作为引擎,uniform_int_distribution或uniform_real_distribution设置范围,可生成分布均匀的整数或浮点数,相比rand()方法更精确、避免偏差问题。

在C++中生成指定范围内的随机数,常用的方法是结合标准库中的
使用 生成指定范围随机数
这是目前最推荐的方式,可以生成指定范围内分布均匀的整数或浮点数。
- 使用 std::random_device 获取一个种子
- 使用 std::mt19937 作为随机数引擎(梅森旋转算法)
- 使用 std::uniform_int_distribution 设置整数范围
示例代码(生成 [min, max] 范围内的整数):
#include iostream>
#include
int main() {
std::random_device rd; // 随机种子
std::mt19937 gen(rd()); // 随机数引擎
std::uniform_int_distribution
for (int i = 0; i
std::cout
}
// 输出类似:42 17 89 3 65
return 0;
}
生成浮点型随机数
如果需要生成指定范围的浮点数,使用 std::uniform_real_distribution。
立即学习“C++免费学习笔记(深入)”;
示例(生成 [0.0, 1.0) 之间的浮点数):
std::uniform_real_distribution
for (int i = 0; i
std::cout
}
兼容旧式 rand() 方法(不推荐)
虽然不推荐,但在简单场景中仍有人使用 rand()。
生成 [min, max] 范围内随机数的写法:
int random_num = min + rand() % (max - min + 1);
注意: 这种方法分布不均,尤其当范围不是 RAND_MAX 的约数时。必须先调用 srand(time(0)) 初始化种子,否则每次结果相同。
基本上就这些。优先使用










