rand() C/C++ 随机数的产生

文章介绍了C语言中的rand()函数用于生成伪随机数,其结果受种籽影响。srand()函数用于设置种籽,确保每次运行结果不同。通过srand()和种籽的管理,可以控制随机数的范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rand()

C语⾔提供了⼀个函数叫rand,这函数是可以⽣成随机数的,函数原型如下所⽰:

int rand (void) ;

rand函数会返回⼀个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的⼤⼩是 依赖编译器上实现的,但是⼤部分编译器上是32767。

rand函数的使⽤需要包含⼀个头⽂件是:<stdlib.h>

知道了rand()函数的基本用法,我们可以去用rand()函数随机产生几个数看看它的效果。在这里我们随机产生5个随机数。(你们也可以按照自己的意愿尝试几次)

两次运行的结果: 

                         第一次运行的结果                                                第二次运行的结果

(在这里我运行了两次,大家如果有兴趣可以多运行几遍)

经过多次运行的结果我们可以看出 连续几次所生成的随机数是一样的。这是为什么呢???

大家可以思考一下。

回归正题,前面我们讲了rand函数会返回⼀个伪随机数那么什么是伪随机数呢???伪随机数不是真正的随机数,是通过某种算法⽣成的随机数。真正的随机数的是⽆法预测下⼀个值是多少的。⽽rand函数是对⼀个叫“种⼦”的基准值进⾏运算⽣成的随机数。 之所以前⾯每次运⾏程序产⽣的随机数序列是⼀样的,那是因为rand函数⽣成随机数的默认种⼦是1。 如果要⽣成不同的随机数,就要让种⼦是变化的。

srand()

C语⾔中⼜提供了⼀个函数叫srand,⽤来初始化随机数的⽣成器的,srand的原型如下:

void srand(unsigned int seed)

 程序中在调⽤rand函数之前先调⽤srand函数,通过srand函数的参数seed来设置rand函数⽣成随 机数的时候的种⼦,只要种⼦在变化,每次⽣成的随机数序列也就变化起来了。                          那也就是说给srand的种⼦是如果是随机的,rand就能⽣成随机数。

需要注意的是:srand函数是不需要频繁调⽤的,⼀次运⾏的程序中调⽤⼀次就够了。

我们可以用rand和srand来写一个产生随机数的代码:


运行结果(这里我只运行了两次,也可以按照自己的意愿多运行几次)

                第一次运行结果                                第二次运行结果

 这时我们就会发现每次运行所产生的随机数就不一样了。

那么思考一下,我们应该如何确定随机数产生的范围呢??

这里我给出来了一个公式:如果要产生的随机数的范围是 a~b 方法如下

a + rand( ) & (b-a+1) ;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值