本文目的
简单的介绍一下C++里面随机数是如何使用的
前置与关联知识点
- C++基本语法。
随机数相关函数
有rand函数,time函数,srand函数。
1. rand()函数
函数原型和库函数
#include<cstdlib>
int rand(void);
- 头文件:,其实就是C++版本的stdlib.h。
- 函数作用:生成一个0~RAND_MAX的随机整数。
- RAND_MAX 是cstdlib的一个宏定义,在不同的库,反正再leetcode是INT_MAX。
2. srand()函数
函数原型和库函数
#include<cstdlib>
void srand(unsigned int seed);
- 前文提到的rand()函数生成的是伪随机数,也就是每次运行同样的代码,得到的随机数序列是一样的,但是会随着随机数种子seed改变。此为生成随机数种子的函数。
- rand()函数调用前会检查是否调用过srand函数,没有的话自动调用srand(1)。
3. time()函数
函数原型和头文件
此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数(即格林尼治时间1970年1月1日00:00:00到当前时刻的时长,时长单位是秒)
#include<time.h>
time_t time(time_t *t);//这个指针意义不明,一般都是NULL或者0填进去就行
//使用方式
time_t t1 = time(0);
time_t t2 = time(NULL);
- 如何使得每次生成的随机数种子都不一样呢?使用时间这一个变量即可。
- 随机数种子填入当前时间的秒数就是一个方法。
4. 实际应用中随机数如何产生
以下代码可做参考
#include<iostream>
#include<time.h>
#include<cstdlib>
using namespace std;
int main()
{
srand((unsigned_int)time(NULL));
int r1 = rand();//0~RAND_MAX的随机数,如果需要限定范围直接对其做相应运算(比如取模)即可。
cout<<r1<<'\n';
return 0;
}
参考文献
因为忘记带书了,所以无