推荐使用C++11的<random>库生成随机数,示例:std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution<> dis(1, 100); 可确保高质量均匀分布,避免rand()的偏移问题,封装函数可提升效率。

在C++中生成随机数,推荐使用C++11引入的
<random>
rand()
要生成真正意义上的随机种子,可以使用
std::random_device
#include <iostream>
#include <random>
<p>int main() {
std::random_device rd; // 真实随机数种子
std::mt19937 gen(rd()); // 使用梅森旋转算法的生成器</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">std::uniform_int_distribution<> dis(1, 100); // 分布:1到100之间的整数
for (int i = 0; i < 5; ++i) {
std::cout << dis(gen) << " ";
}
std::cout << std::endl;
return 0;}
说明:
- std::random_device 提供非确定性随机数(如果系统支持)。
- std::mt19937 是常用的高性能伪随机数引擎。
- std::uniform_int_distribution 保证结果在指定范围内均匀分布。
根据需要选择合适的分布类型:
std::uniform_int_distribution<>
std::uniform_real_distribution<>
std::normal_distribution<>
浮点示例:
立即学习“C++免费学习笔记(深入)”;
std::uniform_real_distribution<> dis(0.0, 1.0); double random_value = dis(gen);
使用旧式
rand() % N
time(nullptr)
rand()
srand()
可以将随机数生成封装为静态局部变量形式,提高效率:
int random_int(int min, int max) {
static std::random_device rd;
static std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(min, max);
return dis(gen);
}
这样每次调用只创建分布对象,引擎只初始化一次。
基本上就这些。C++标准库提供了强大而现代的随机数工具,合理使用能写出更可靠、更高效的代码。
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号