C语言-生成随机数

本文详细阐述了C语言中的rand()函数如何生成固定序列的伪随机数,以及如何通过srand()函数设置种子以实现不同随机性。特别强调了使用time()函数作为种子的重要性,以及如何通过取余操作调整生成随机数的范围。
摘要由CSDN通过智能技术生成

目录

1 rand()函数

2 srand()函数


1 rand()函数

int rand (void);

rand函数可以生成一个随机整数,范围在 0 ~ RAND_MAX,RAND_MAX的值是0x7fff,换算成十进制是32767。

但是我们发现使用此函数生成随机数,每次生成的随机数都是一样的,都是如下图的顺序的几个数

实际上rand()产生的随机数是伪随机数,是根据一个数值按照某个公式推算出来的,这个数值被称为“种子”,种子和随机数的关系是一种正态分布。种子在每次启动计算机是随机的,一旦启动种子就不会改变,生成的随机数也就是固定的了。

2 srand()函数

srand函数用于给rand函数设定种子

void srand (unsigned int seed);

srand需要无符号整数作为参数,传入不同的值才能生成不同的种子,这里我们一般用时间戳(time函数会返回一个时间戳),因为时间是随时在改变的。

time函数的返回值是time_t类型的值,我们要强转为无符号整数类型,或者无符号类型,如下:

srand((unsigned)time(NULL));

注意:srand函数在一个工程中设置一次就行,也就是说,即使rand函数执行很多次,srand也只要调用一次就行。

生成随机数的范围,可以在rand函数后面取余,比如:

int a = rand() % 10; //产生0~9的随机数
  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值