随机数的产生

一.背景

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

如何产生随机数呢?

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

二.产生随机数

2.1 rand() 函数

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

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

例程

随机数的产生_第1张图片

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

2.2 srand() 函数

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

例程

随机数的产生_第2张图片

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

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

你可能感兴趣的:(数据结构算法,随机数)