在程序开发过程中,有时我们需要用到随机数,如果自己手写一个随机数容易引用重复,而c++11已经提供了一个生成随机数的库random,并且就可设置随机数的范围和类型,下面我们来学习使用两个最常用的随机数生成函数。
| 均匀分布 | |
| uniform_int_distribution (C++11) | 产生在一个范围上均匀分布的整数值 (类模板) |
| uniform_real_distribution (C++11) | 产生在一个范围上均匀分布的实数值 (类模板) |
#include#include using namespace std; int main() { default_random_engine int_engine; //定义随机数引擎 //定义整型随机数的取值范围 uniform_int_distribution udistribution(100000, 999999); unsigned int uRandom = udistribution(int_engine); cout << "uRandom====================== " << uRandom << endl; uniform_int_distribution distribution(-999999, -100000); int random = distribution(int_engine); cout << "random======================= " << random << endl; //定义浮点型随机数的取值范围 default_random_engine real_engine; //定义随机数引擎 uniform_real_distribution doubleDistribution(10000.1, 99999.9); double realRandom = doubleDistribution(real_engine); cout << "realRandom=================== " << realRandom << endl; random_device rd; // 将用于获得随机数引擎的种子 mt19937 gen(rd()); // 以 rd() 播种的标准 mersenne_twister_engine uniform_real_distribution<> dis(10000, 99999); for (int n = 0; n < 10; ++n) { // 用 dis 变换 gen 生成的随机 unsigned int 为 [1, 2) 中的 double std::cout << dis(gen) << ' '; // 每次调用 dis(gen) 都生成新的随机 double } cout << endl; cout << "Hello World!" << endl; return 0; }
运行结果:
参考:
- cppreference.com">标准库头文件



