一、rand函数
它会生成一个伪随机数,范围在0~RAND_MAX(32767)。
注意:使用rand函数时要包含头文件:stdlib.h
现在我们试一试生成五个随机数:
这是第一次生成的五个随机数
这是第二次生成的随机数:
这时我们就会发现这两次生成的随机数都是一样的,这其实是rand函数生成的随机数是伪随机数,它并不是真正的随机数,真正的随机数是无法预测下一个值是多少的,而rand函数是对一个叫“种子”的基准值进行运算生成的随机数,之所以前面生成的两次随机数都是一样的,那是因为rand函数生成随机数种子的默认值为1,如果要让随机数每一次都是不同的,那么就要让种子的值不断变化。为了解决这个问题,这时就可以使用srand函数
二、srand函数
我们先来试一试:
第一次:
第二次:
这时我们就会发现随着srand()括号里面的值的变化,生成的随机数的值也是不断变化的。
问题来了,这个种子不可能人力一个一个的去改吧,这时就有一个新的概念--时间戳,这时为了使用这个时间戳,就有了新的函数--time
三、time函数
在程序中我们⼀般是使⽤程序运⾏的时间作为种⼦的,因为时间时刻在发⽣变化的。
在C语⾔中有⼀个函数叫time,就可以获得这个时间,time函数原型如下:
time函数会返回当前的⽇历时间,其实返回的是1970年1⽉1⽇0时0分0秒到现在程序运⾏时间之间的 差值,单位是秒。返回的类型是time_t类型的,time_t类型本质上其实就是32位或者64位的整型类 型。
time函数的参数timer如果是⾮NULL的指针的话,函数也会将这个返回的差值放在timer指向的内存 中带回去。
如果timer是NULL,就只返回这个时间的差值。time函数返回的这个时间差也被叫做:时间戳。
注意:time函数的时候需要包含头⽂件:time.h
上面两种写法都可以,在上面,我的rand()%100的意思是使这个随机产生的数控制在0-99之间(下面会讲到)。
还有srand函数是不需要频繁调用的,一次运行的程序中调用⼀次就够了。
四、设置随机数的范围
如果我们要生成0~99之间的随机数,方法如下:
如果要生成1~100之间的随机数,方法如下:
如果要生成100~200的随机数,方法如下:
所以如果要生成a~b的随机数,方法如下:
接下来我们实践一下: