- Rand
C语⾔提供⼀个函数叫rand,这函数是可以⽣成随机数,函数原型如下所⽰: int rand (void)
rand函数会返回一个伪随机数,这个随机数的范围是在0-RAND_MAX
之间,是依赖编译器,但是大部分编译器上是32767
记得,要加上一个头文件是:#include<stdlib.h>
例:
我们多运行多几次,发现随机数是一样,我们就不难发现,其实rand函数⽣成的随机数是伪随机的,伪随机数不是真正的随机数,是通过某种算法⽣成的随机数。真正的随机数的是⽆法预测下⼀个值是多少的。⽽rand函数是对⼀个叫“种⼦”的基准值进⾏运算⽣成的随机数。
Rand函数⽣成随机数的默认种⼦是1,如果要生成随机数,要对种子进行改变
2.srand函数
C语言中提供了⼀个函数叫srand,⽤来初始化随机数的⽣成器,srand的原型如下: void srand (unsigned int seed)
程序中在调用rand函数先调用srand函数,通过srand函数的参数seed来设置rand函数⽣成随机数的时候的种⼦,只要种⼦在变化,每次⽣成的随机数序列也就变化起来了。
那也就是说给srand的种⼦是如果是随机的,rand就能⽣成随机数;在⽣成随机数的时候⼜需要⼀个随机数
3.Time
如果每次运行程序时都使用相同的种子,rand 函数生成的随机数序列也会相同。所以通常会使用 time(NULL) 来获取当前时间作为种子,因为时间是不断变化的,
time函数原型如下:
time_t time (time_t* timer);
time函数的时候需要包含头⽂件:time.h
例:
第二次以运行
我们发现随机数开始改变的
注意:
1.种子相同则序列相同:如果每次运行程序时都使用相同的种子,rand 函数生成的随机数序列也会相同。所以通常会使用 time(NULL) 来获取当前时间作为种子,因为时间是不断变化的。
2.rand 生成的是伪随机数:rand 函数生成的是伪随机数,并非真正意义上的随机数。这些随机数是基于特定的算法生成的,只要种子相同,生成的序列就固定。
3.种子的范围:srand 函数的参数是 unsigned int 类型,所以种子的取值范围是 0 到 UINT_MAX。
4. 设置随机数的范围
如果我们要⽣成0~99之间的随机数,⽅法如下:
如果要⽣成1~100之间的随机数,⽅法如下:
如果要⽣成100~200的随机数,⽅法如下: