计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

一种软件生成真随机数算法的设计和实现(1)(2)

2015-05-15 01:30
导读:对于进一步的组合处理,我们要慎重的选择。如果选择的好,可以进一步的增加序列的随机性,从而可以降低对原始随机数序列采集的要求。但是,特别值

对于进一步的组合处理,我们要慎重的选择。如果选择的好,可以进一步的增加序列的随机性,从而可以降低对原始随机数序列采集的要求。但是,特别值得注意的是,如果选择的组合算法存在缺陷,反而有可能降低原始随机数序列的随机性。极端的情况是,比如组合算法生成的结果都是0组成的序列。
4 具体实现
我们选择这样的一种随机事件,当用户拿着鼠标在计算机屏幕上随意滑动时,鼠标滑动的轨迹组成的一条曲线是随机的。也就是说,即使同一个用户也不可能划出这样一条完全一致的曲线。这种方式很类似于我们投掷硬币的方式。就像古希腊一位哲人所说,人生不可能两次踏入同一条河流。
基于上述的随机事件的选择,我们在一定的时间内对这条曲线进行时间的抽样。如果要求生成N bit的01序列,那么我们就对这段曲线进行时间间隔为1/N的取样。这样,我们就会得到N个取样点,每个取样点用其在计算机屏幕上的坐标来表示。接着对每个取样点的横坐标和纵坐标进行相加,取不大于坐标和的最大整数。如果得到的整数是偶数,那么这个取样点就表示为0;如果得到的整数是奇数,那么这个取样点就表示为1。这样,我们最后得到了由0和1组成的随机数序列。假设,我们得到的随机数序列可以表示为:
Seed [i],其中(i=0,1,…N-1)
然后,我们对得到的随机数序列进行进一步的处理,组成组合随机数生成器,从而进一步增强序列的随机性。
我们使用线性同余法对原始随机数序列进行进一步处理,从而得到新的组合随机数序列。我们使用线性同余法得到N个位于[0,N-1]之间的随机数,它可以表示为:
A [j],其中(j=0,1,…N-1),( A [j]的取值在[0,N-1]).
数组A [j]的含义如下:数组下标j表示组合后的随机数序列的第j个位置,数组的值A [j]表示组合后的随机数序列第j个位置的值从原始随机数序列Seed 中A [j]位置取值。

(科教作文网http://zw.NSEaC.com编辑发布)


如果得到的随机数序列A [j] 没有重复值,也就是满足:A [j] = A [k],当且仅当 j = k 。
那么得到的组合随机数序列为:
Seed [ A [0] ],Seed [ A [1] ],Seed [ A [2] ],…Seed [ A [N-1] ].
如果得到的随机数序列A [j] 有重复值,比如A [6] = A [23] = N/2。
假设出现A [j] = A [k](j
上一篇:电子商务信息安全技术浅议(1) 下一篇:没有了