C++随机函数用法详解

函数简介
第一:int rand();    :返回从[0,MAX)之间的随机整数,这里的MAX与你所定义的数据类型而定,不超过int范围;
                                  使用时,需要添加#include <cstdlib>
              void srand( unsigned seed );      :设置随机数种子,#include <cstdlib>
              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的小数。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值