函数简介
第一:int rand(); :返回从[0,MAX)之间的随机整数,这里的MAX与你所定义的数据类型而定,不超过int范围;
使用时,需要添加#include <cstdlib>
void srand( unsigned seed ); :设置随机数种子,#include <cstdlib>
time_t time( time_t *time ); :返回当前时间,#include <ctime>
time_t time( time_t *time ); :返回当前时间,#include <ctime>
第二:单独使用rand()函数
rand函数可以单独使用,只是每次产生的随机数都一样。这里所谓的一样是指,程序两次运行的结果一样,而不是指在一次运行中函数产生的随机数一样。实验结果如下所示:
实验代码一:
#include<cstdlib>
#include<iostream>
using namespace std;
int main(){
int i;
for(i=0;i<10;++i){
cout<<rand()<<"--";
}
return 0;
}
实验代码二:
#include<cstdlib>
#include<iostream>
using namespace std;
int main(){
int i;
for(i=0;i<10;++i){
cout<<rand()<<"--";
}
cout<<endl<<"***************************"<<endl;
return 0;
}
分别运行两段代码,你会发现产生的随机数是一样的。
第二:与srand()和time()函数联合使用
实验代码如下:
实验代码如下:
#include<ctime>
#include<cstdlib>
#include<iostream>
using namespace std;
int main(){
int i;
srand(time(0));
for(i=0;i<10;++i){
cout<<rand()<<"--";
}
cout<<endl<<"***************************"<<endl;
return 0;
}
这样可以避免两次运行产生的随机数相同,前提条件是两次运行时间间隔要大于1秒,否则结果也是一样的。这是因为rand()函数产生的其实是伪随机数列,以时间为种子,所以如果时间间隔太小就会产生相同的随机数。
第三:产生给定范围0~max-1之间的随机数
实验代码如下:
#include<ctime>
#include<cstdlib>
#include<iostream>
using namespace std;
int main(){
int max=10;
int i;
srand(time(0));
for(i=0;i<10;++i){
cout<< rand()%max <<"--";
}
cout<<endl<<"***************************"<<endl;
return 0;
}
第四:产生1-max之间的随机数
实验代码如下:
#include<ctime>
#include<cstdlib>
#include<iostream>
using namespace std;
int main(){
int max=10;
int i;
srand(time(0));
for(i=0;i<10;++i){
cout<< rand()%max +1<<"--";
}
cout<<endl<<"***************************"<<endl;
return 0;
}
第五:关于srand()函数和time()函数设置种子时时间间隔为1秒的解释
time(0)或者time(NULL)返回的是系统的时间(从1970.1.1午夜算起),单位:秒
#include <ctime>
#include <iostream>
using namespace std;
void main()
{
int a;
a=time(0);//time(0)返回的是系统的时间(从1970.1.1午夜算起),单位:秒
cout<<a<<endl;
}
第六:用rand()函数获取小数
方法是把获得的整数除以一个浮点型数字,实验代码如下:
#include<ctime>
#include<cstdlib>
#include<iostream>
using namespace std;
int main(){
int max=10;
int i;
srand(time(0));
for(i=0;i<10;++i){
cout<< 1.0*(rand()%max)/max<<"--";
}
cout<<endl<<"***************************"<<endl;
return 0;
}
这段程序产生0.0-0.9的小数。