C++中的随机数使用实例
2023-09-27 14:25:48 时间
1. 使用rand生成随机数,不过生成的是伪随机数(运行时每次生成的随机数都是一样的)
int a = rand();
cout << "random a = " << a << endl;
2. 在使用rand之前使用srand设置随机种子,这样生成的随机数才是真正的随机数,使用srand设置随机种子要让里面的参数随时变换,所以通过获取系统时间作为其参数(这样保证每个时间种子都是变化的,否则生成的随机数还是相同的),如下生成10个随机数:
srand((unsigned)time(NULL)); //系统时间做随机种子
for (int i = 0; i < 10; i++)
{
int j = rand();
cout << "随机数: " << j << endl;
}
生成0~10之间的随机数,可以对10去余
int j = rand() % 10;
生成指定范围内的随机数,比如[5,15]之间的随机数
srand((unsigned)time(NULL));
for (int i = 0; i < 10; i++)
{
int a = rand() % (15 - 5 + 1) + 5; //生成随机数范围[5, 15]
cout << "随机数:" << a << endl;
}
公式:
C++11中的random类
random类是C++11中增加的类,该类可以用于生成随机数,具有C语言中rand生成伪随机数的功能,但其功能更强大。原生支持生成浮点数,及分布类。
随机数发生器主要由分布对象和随机数引擎对象组成。其中随机数引擎用于根据随机数种子来产生随机数,分布对象对产生的随机数根据需求进行分布。
random中定义了多种随机数引擎及分布类型,常用的引擎是默认伪随机数引擎类default_random_engine
,常用的分布类有产生整型分布的uniform_int_distribution
,产生浮点型的分布uniform_real_distribution
。
//该函数接受三个参数分别指定随机数范围和种子,返回double
double random_unint(unsigned int min, unsigned int max, unsigned int seed = 0)
{
static std::default_random_engine e(seed);
static std::uniform_real_distribution<double> u(min, max);
return u(e);
}
void main()
{
for (int i = 0; i < 15; ++i)
{
std::cout << random_unint(0, 15, time(NULL)) << endl;
}
system("pause");
}
相关文章
- 【c++STL——第十一讲】iterator系列 (常用知识点总结)
- C++实现程序单实例运行的两种方式
- linux下c/c++实例之socket服务器实例
- C++重载运算符
- C++003基础
- C++ vector 实例
- C++实例 MySTLString
- c++ vector实例
- c++中有些重载运算符为什么要返回引用
- 29 C++ - 友元
- C++程序设计教材目录思维导图(增C++Primer)
- C++ 类的实例中 内存分配详解
- QT c++ 中使用PostMessage/SendMessage实例
- c++中指针,堆栈内存分配重要概念理解汇总(实例注释)
- QT中使用C++ socket通信,socket通信原理三次握手和四次握手详解、客户端与服务端实例详解
- C++中引用(&)的用法和应用实例
- 《C++面向对象高效编程(第2版)》——1.4 理解消息、方法和实例变量
- 《Imperfect C++中文版》——2.2 控制你的客户端
- 《数字图像处理与机器视觉——Visual C++与Matlab实现》——第0章 数字图像处理概述
- Redis C++编程实例
- 169、【动态规划】leetcode ——123. 买卖股票的最佳时机 III:二维数组+一维数组 (C++版本)
- 国家模式c++
- [招聘]高级软件工程师(C/C++), 惠州大亚湾,BYD
- C/C++分割字符串: strtok函数
- Windows下C++多线程编程(入门实例)
- Windows下C++多线程编程(入门实例)