本文将介绍几种如何在 C 语言中生成随机数的方法。
函数实现了一个伪随机数生成器,可以提供一个范围为 的整数,其中 在现代系统中是 231-1。注意, 函数背后的生成器算法是确定性的。因此,它的种子位应该是随机位。
函数用于为伪随机数生成器提供种子,随后对 的调用将产生随机整数序列。在缺点方面, 的实现不希望产生均匀的随机位。因此, 函数不建议在密码学高度敏感的应用中使用。下面的例子用当前时间的值作为生成器的种子,这不是一个好的随机性来源。
输出:
C 标准库中可用的另一种伪随机伪随机数生成器是在 函数下实现的。与 相比,这种方法是首选方法,但在敏感代码中,加密应用不应利用 函数。 不接受任何参数,并返回 范围内的 类型的整数。该函数最好用 函数做种子,以产生质量相对较好的随机数。
需要注意的是,和前面的例子一样,我们使用 函数传递当前的时间值作为种子,在安全敏感的应用中不建议使用。
输出:
是一个 Linux 特有的函数,用于获取随机比特,其质量远远高于之前提供的两种方法。 需要三个参数- 指针,指向应该存储随机比特的缓冲区,缓冲区的字节大小,以及特殊功能的标志。
在下面的例子中,我们生成一个无符号的整数,其中 的地址被传递为存储随机位的缓冲区,大小用 运算符计算。在极少数情况下, 检索位的随机性来源可以不初始化。对 函数的调用将阻止程序的执行。因此, 宏定义作为第三个参数传递给函数,以便在这些情况下立即返回错误值 。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/2884.html