感谢平台分享-http://bjbsair.com/2020-04-10/tech-info/53235.html
前言
本文主要讲解C语言的随机函数,学习随机函数将由此拉开序幕,亲爱的准备好了没?
随机数
随机数主要是通过rand()函数产生的,rand() 函数可以随机产生一个正整数,它会产生一个无符号整数,范围在1~32767,即两字节16位的整数最大值。而GNU C++产生的随机数范围为2147483647。 范围中的每一个数在每次随机调用rand时都有相同的概率被选中。**使用随机函数的时候需要加上#inlcude <stdlib.h> 头文件。**如以下案例:
**注意:每次程序运行的结果答案都是相同的,这显然不是我们想要的。**这是因为,rand函数不是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand()。而使用同种子相同的数调用 rand()会导致相同的随机数序列被生成。如果要确保每次产生的都不一样,我们需要引用一个专门为rand设置随机化种子的函数srand().
随机函数种子
随机函数种子srand函数在库中说明如下:
//接口说明:
time() returns the time as the number of seconds since the Epoch,
1970-01-01 00:00:00 +0000 (UTC).
If tloc is non-NULL, the return value is also stored in the memory pointed to by tloc.
意思就是:要想每次随机结果不一样,就要每次运行更改种子,time函数返回当前时间距离197-01-01的描述,每次运行都不一样,正好可以当做种子,既就是大家学习的rand()函数的时候,老师让大家写srand((unsigned int)time(NULL))的原因,让随机数与时间绑定关系,时间在改变,随机数自然能够改变。
其实srand函数的参数编程中可以自己随意设置,伪随机就是每次得到的数据有规律可循,默认情况下数字在10x7fff,也就是(132767)。当设置参数为srand(1000),则生成的随机数是1000~0x7fff。
如下实例:
随机函数固定范围
主要思路其实非常简单,就是通过取余来做即可