【C语言】关于随机数rand和srand

本文介绍了如何在C++中使用rand()和srand()函数生成随机数。rand()函数产生0到RAND_MAX之间的伪随机数,而srand()用于设置随机数生成器的种子,通常结合time(NULL)使用以确保每次运行产生不同的序列。需要注意的是,srand()应在程序开始时调用一次,避免在循环内重复设置导致随机数重复。通过这些基础知识,可以实现如数组中随机取数等实际应用。
摘要由CSDN通过智能技术生成

        如果我们想在一个数组中随机抽取一个数,那我们就需要用到rand函数

在MSDN中查询到

 翻译过来就是:

        rand 函数会返回一个介于 0 到 RAND_MAX 范围内的伪随机整数,

        在调用 rand 之前,使用 srand 函数为伪随机数生成器设定种子。

什么意思呢?举个例子看看,我们将随机抽取100个值,把他printf出来

 首先我们得引用头文件<stdlib.h> --->

RAND_MAX的值为32767,所以rand()产生的数值在0~32767之间。 

尝试多次后,每次都是这100个数,如果大乐透这样玩,那早就破产了,所以我们需要引用scand函数,srand函数是随机数发生器的初始化函数,也就是srand函数是产生伪随机数的起始点。                在MSDN中srand给的例子含有一串函数:

srand( (unsigned)time( NULL ) );

        这里我们就需要用到time函数,因为时间是不断在变化的,所以我们得在srand中传递一个时间,也就是时间戳,time函数需要引用头文件<time.h>。time()后面我们不需要赋值,所以给个空值NULL,而srand函数需要一个unsigned int类型的值,所以我们要强制把time返回成unsigned int类型。

         需要注意的是如果我们把srand((unsigned int)time(NULL));放在了循环里,那我们会发现,打出来的随机数会十分的相近甚至相等,所以我们得把srand((unsigned int)time(NULL))放到开头,也就是int main()函数下面,那就只会定义一次了。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值