我是靠谱客的博主 醉熏老虎,最近开发中收集的这篇文章主要介绍线性同余算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

   线性同余发生器(Linear congruential generator)是

                  Xn =(aXn-1 = b) mod m

形式的伪随机序列发生器,其中Xn 是序列的第n个数,Xn-1 是序列的第n-1个数,变量a,b,m是常数,a是乘数,b是增量,m是模,密匙即种子是初始值X0

   这种发生器的周期不会超过m。如果a,b和m都是可选的,那么发生器将会是一个最大周期发生器(maximal period generator,有时也叫最大长度),并且周期为m。(例如,b是与m相关的素数。) 在选择常数是需要仔细,以保证能找到最大的周期。

   线性同余发生器的优点是:速度快,每位只需要很少的操作。

   然而,它不能用在密码学中,因为它们都是可预测的。线性同余发生器首先被Jim Reeds破译,然后被Joan Boyar破译。她还破译了二次同余发生器:

    Xn =(aX2 n-1 + bXn -1+c) mod m

和三次同余发生器:

    Xn =(AX3 n-1 +bX2 n-1 +cXn-1 +d) mod m

 

 在C的标准库里,也存在一个产生伪随机的函数:rand().但是需要先设置种子,设置种子使用的是函数srand(unsigned int seed)。在WINDOWS环境下,seed值通常取的是(int)time(NULL)或者GetTickCount()。

 

 

参考:《应用密码学协议、算法与C源程序》

最后

以上就是醉熏老虎为你收集整理的线性同余算法的全部内容,希望文章能够帮你解决线性同余算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(88)

评论列表共有 0 条评论

立即
投稿
返回
顶部