第一贴就水一发吧 (逃
众所周知,随机数是个好东西,掌握了随机数可以帮助我们掌握卡池原理从而使抽到SSR的概率变高(并不会。
实际上,在大部分网游中的随机代码都是很复杂的,不会让你这么简单就抽到SSR。但最核心的部分与我们今天要讲的rand()函数还是有关联的。
在C中,要调用rand()首先要调用stdlib.h头文件。
rand()函数的作用是根据随机数种子生成一个具有周期性但周期非常非常长的随机数表,借此表来返回一个整形随机数值,其范围在0~32767。
所谓种子...玩过某些沙盒游戏的应该都知道在地图生成时会有一个对应的种子,只要种子确定,地图就是确定的。随机数表也是一样。
而种子,是需要我们手动输入的。
我们需要调用一个函数srand(/*种子*/)来获取一个随机数表,当在程序中调用rand()函数前没有调用srand()时,会自动调用srand(1)。
为了获取种子,我们一般使用time()函数来获取一个时间段,其为从1970年1月1日0时至现在经过的秒数,它的类型是time_t,我们可以把它重定义为unsigned long long。
所以在程序中的代码一般是这样的:
1 srand((unsigned long long)time(NULL)); 2 cout<<rand()<<endl;
那么怎么自定义随机数的取值范围呢?
很简单,比如你想取0~100的随机数,你可以写成rand()%101。
想取50~100,可以写成rand()%51+50。
利用这个东西,我们就可以做一些有意思的东西辣~