首先我们来写一个简单的随机数的实现,随机数需要随机函数rand()的参与;
#include<iostream>
#include<cstdlib>//这个头文件是rand()以及srand()函数所需的头文件
using namespace std;
int main()
{
int n=rand();
cout<<n<<endl;
return 0;
}
运行起来我们就发现确实生成了一个随机数
但是我们多运行几遍就会发现怎么都是同一个数,这是因为rand()函数在运行时需要一个种子函数(srand()),并且通过这个种子加以复杂的运算才会产生近似随机的随机数列,
上边那个程序中我们并没有设定种子函数srand(),系统会自动产生一个srand()函数,但是系统自动产生的函数不会变化,也就导致了每一次运行得到的随机数总是一样的
接下来这个程序就加上了种子函数srand()
#include<iostream>
#include<cstdlib>//这个头文件是rand()以及srand()函数所需的头文件
#include<ctime>//这个头文件是time函数所在的头文件;
using namespace std;
int main()
{
srand(time(0));
for(int i=0;i<10;i++)
{
int n=rand();
cout<<n<<endl;
}
return 0;
}
把上边的程序多运行几次就会发现确实每一次的结果都不一样了,这就是srand()函数在起作用
但是还有一个问题就是,如果想产生从n-m的数,应该怎么办呢,其实有一个简单的方法 就是用到取模符号——%
#include<iostream>
#include<cstdlib>//这个头文件是rand()以及srand()函数所需的头文件
#include<ctime>//这个头文件是time函数所在的头文件;
using namespace std;
int main()
{
srand(time(0));
int n,m;
cin>>n>>m;
for(int i=0;i<10;i++)
{
int h=n+rand()%(m-n+1);
cout<<h<<endl;
}
return 0;
}
把这个程序运行几遍发现确实如我所说能够产生n-m之间的随机数了
以上就是rand()以及srand()函数的简单应用;