C++11推荐用头文件生成随机数,核心是std::random_device(真种子)、std::mt19937(伪随机引擎)和uniform_int/real_distribution(分布),避免重复创建引擎或分布,弃用rand()。

在C++中生成随机数,推荐使用C++11引入的 <random></random> 头文件,它比传统的 srand()/rand() 更安全、更灵活、分布更均匀。
用 std::random_device 和 std::mt19937 生成高质量随机数
std::random_device 是真正的随机数生成器(通常基于硬件),用来初始化伪随机数引擎;std::mt19937(梅森旋转算法)是常用且高效的伪随机引擎。
示例:生成 [1, 100] 区间的整数
#include <iostream>
#include <random>
int main() {
std::random_device rd; // 真随机种子
std::mt19937 gen(rd()); // 以rd为种子初始化引擎
std::uniform_int_distribution<int> dis(1, 100); // 定义整数均匀分布 [1, 100]
for (int i = 0; i < 5; ++i) {
std::cout << dis(gen) << " ";
}
std::cout << "\n";
return 0;
}登录后复制
生成浮点随机数(如 [0.0, 1.0))
用 std::uniform_real_distribution,注意默认区间是左闭右开:
立即学习“C++免费学习笔记(深入)”;
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~