生成伪随机整数rand()

rand()这个函数对于一个新手来说第一次出现就是在猜字数游戏当中,可是第一次看根本不懂,只是照着套用,直到上周选修课又编程猜字数游戏用到时,觉得是应该好好弄懂了!(废话好多(^__^)

猜字数想让程序生成,就用stdilb.h头文件中的rand()函数,每次调用都会返回一个随机整数,叫伪随机数,范围是0~RAND-MAX

int chosen=0;
chosen=rand();

但rand()函数生成序列需要一个初始种子数字,对于特定的种子,生成的序列相同。(即每次猜数游戏调用它猜的都是同一个数字,那还有什么意思?)这个时候就需要srand(),也属于stdlib.h中,调用它可以传递给它的参数作为种子初始化序列,就是这样我们每次猜的数字都会不同,着才是一个正常的游戏,you know?

但这样还不够,time.h头文件中声明的time()函数,返回的是1970年1月1日到现在经过的秒数,所以每次返回值double不同,time()函数的参数值是NULL

srand(time(NULL));
int chosen=0;
chosen=rand();

这样我们就可以每次得到一个不同的整数了,但是还有一个问题:那就是你猜数字总该有个范围是吧,要不然太大了,猜一辈子吗?也不能这样虐单身dog是吧。上限RAND-MAX相当大,通常为int最大值,但可以缩小范围:

比如猜的数字 x~y
就是 x+rand()%(y-x+1) 【公式】

或者:
float a;
a=rand()%y+x;

这样就是产生[x,x+y)之间的数字,也就是[x,x+y-1]
两种表达方式都是一样的

srand(time(NULL));
int chosen=0;
chosen=1+rand()%100;  //范围是1~100

OK啦,我特别去找了些资料,尽量白话文,这样大家都懂了吧,恩,不错,继续加油吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值