C语言如何随机数生成

  1. 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的随机数,⽅法如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值