随机数的产生

一.背景

在开发的过程中有时候我们需要使用到随机数。举个可能使用到的场景,在需要通信的功能时,我们希望自己制定的协议不会轻易被别人破解,那么我们可以在发送的协议中设置一个放置随机数的字段,在制定协议的时候,将产生的随机数,合并到正常数据一起进行校验,这样虽然是同样功能的指令,但每次发送的数据可能不一样,则导致破解难度会提高不少。

如何产生随机数呢?

现在有专门的随机数产生的硬件芯片,不过不在我们这里讨论的范围。这里我们讨论的是使用软件产生随机数。

二.产生随机数

2.1 rand() 函数

在C语言中我们需要用 rand() 函数来产生随机数,在C语言中rand()函数所对应的头文件为:stdlib.h

其产生随机数的范围为0——RAND_MAX,这里的RAND_MAX 是一个值。

例程

由上图的例程我们可以看到产生了一个随机数83,但是每次都是同一个数,这咋回事,这样还随机个啥,别急!

2.2 srand() 函数

在使用 rand() 函数时需要用 srand() 函数设置随机数种子。

例程

加上了一个以时间作为基数的种子,产生的随机数就是不断变化的。时间是一直累加的所以srand()函数的输入是一直变化的,这样产生的随机数理论上更随机。

如果我们使用在嵌入式开发里面,可以在一个时基里面不断累加某个计数器作为srand()函数的输入,以此产生时间累加的同样效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值