rand()函数存在于头文件<stdlib.h>中,是一个生成伪随机数的函数。
1.伪随机数
基本应用是用于取一定范围内的随机数,如下:
使用者可以灵活规定随机数范围,例如想输出10~100的随机数,显然不能直接 %101,但是可以这样:
2.随机数种子
为了让生成的数字更具随机性,可以引入随机数种子(须包含头文件<ctime>),它可以利用系统当前的时间产生一个随机数。语法如下:
这个种子的使用也有一些注意点,例如下面这段代码,读者可以考虑一下运行的结果:
#include<iostream>
using namespace std;
#include<stdlib.h>
#include<ctime>
int main()
{
while(1)
{
srand((unsigned int)time(NULL));
int num=rand()%101 +10;
cout<<num;
system("pause");
}
return 0;
}
结果如下:
可以看到num的值是随着时间增加而不断变化的,而且变化呈一定规律。其原因是计算机执行循环的速度很快,而time的精度较低,所以前后几次循环的过程中近似认为是同一时间,产生的是同一个随机数种子,因此生成了同一个随机数(同一个随机数列),想解决这种现象就要把srand()函数放在循环之外。修改后如下:
#include<iostream>
using namespace std;
#include<stdlib.h>
#include<ctime>
int main()
{
srand((unsigned int)time(NULL));
while(1)
{
int num=rand()%101 +10;
cout<<num;
system("pause");
}
return 0;
}
运行: