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

在C++中生成指定范围内的随机数,常用的方法是结合标准库中的 <random> 头文件。相比传统的 rand() 函数,现代C++推荐使用更精确、分布更均匀的随机数生成方式。
这是目前最推荐的方式,可以生成指定范围内分布均匀的整数或浮点数。
示例代码(生成 [min, max] 范围内的整数):
#include <iostream>
#include <random>
int main() {
std::random_device rd; // 随机种子
std::mt19937 gen(rd()); // 随机数引擎
std::uniform_int_distribution<int> dis(1, 100); // 范围 [1, 100]
for (int i = 0; i < 5; ++i) {
std::cout << dis(gen) << " ";
}
// 输出类似:42 17 89 3 65
return 0;
}
如果需要生成指定范围的浮点数,使用 std::uniform_real_distribution。
立即学习“C++免费学习笔记(深入)”;
示例(生成 [0.0, 1.0) 之间的浮点数):
std::uniform_real_distribution<double> dis(0.0, 1.0);
for (int i = 0; i < 5; ++i) {
std::cout << dis(gen) << " ";
}
虽然不推荐,但在简单场景中仍有人使用 rand()。
生成 [min, max] 范围内随机数的写法:
int random_num = min + rand() % (max - min + 1);
注意: 这种方法分布不均,尤其当范围不是 RAND_MAX 的约数时。必须先调用 srand(time(0)) 初始化种子,否则每次结果相同。
基本上就这些。优先使用 <random> 库,避免 rand() 带来的偏差问题。
以上就是c++++怎么生成一个范围内的随机数_c++生成指定范围随机数方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号