产生随机数rand()

我们知道可以用srand()和rand()函数来产生随机数,但是这个具体怎么用呢,先看一个例子:

int main()
{
	srand(1); int random;
	for(int i=0;i<10;i++)
	{
		random = rand()%5;
		cout<<random<<" ";
	}
	system("pause");
	return 0;
}
输出:

可以看出里面有重复的值。并且每次执行输出的数的序列都一样。

去掉srand(1);输出的还是同样的数。

函数srand()可以为随机数生成器播散种子,只要种子不同,rand()函数就会产生不同的随机数序列,srand()称为随机数生成器的初始化器。当提供的种子相同时,随机数序列也是相同的。当种子为1时,与不使用srand()函数是一样的,也就是说rand()的默认种子是1.

2、将随机数的种子改为8,来看一下:

int main()
{
	srand(8);int random;
	for(int i=0;i<10;i++)
	{
		random = rand()%5;
		cout<<random<<" ";
	}
	system("pause");
	return 0;
}
输出:

虽然输出结果和种子是1的时候不同,但是每次运行后的结果都是相同的。

3、指定seed为当前系统流逝了的时间(单位为秒):

#include <ctime>
int main()
{
    srand((unsigned)time(0));
    int random;
    for(int i=0;i<10;i++)
    {
	random = rand()%5;
	cout<<random<<" ";
    }
    cout<<time(0)<<endl;
    system("pause");
    return 0;
}
运行后每次产生的随机数都不一样,因为每次启动程序的时刻都不同。

关于time_t time(0): 

time_t被定义为长整型,它返回从1970年1月1日零时零分零秒到目前为止所经过的时间,单位为秒。比如假设输出:

cout < <time(0); 


cout<<hex<<"0x"<<RAND_MAX<<endl;
输出0x7fff, 在stdlib.h头文件中,定义了宏 #define RAND_MAX 0x7fff

将rand()的返回值与5求模是必须的,这样才能确保目的随机数落在[0,5)之间,否则rand()的返回值本身可能是很巨大的。 

一个通用的公式是: 要取得[a,b)之间的随机整数,使用(rand()%(b-a))+a(结果值将含a不含b)。 

在a为0的情况下,简写为rand()%b。伪随机浮点数:

用rand()/double(RAND_MAX)可以取得0~1之间的浮点数(注意,不同于整型时候的公式,是除以,不是求模) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值