版权归原作者所有,如有侵权,请联系我们

[科普中国]-伪随机方式

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

定义

在计算机、通信系统,密码学中,在处理有些问题,我们无法做到真正的随机,引入某些物理噪声的方法来实现无周期的随机,一般称为伪随机。伪随机方式是指利用伪随机解决问题的方式。例如在计算机中利用伪随机方式去挑选整数,它能消除线性再散列中所产生的堆聚问题。

方式从计算机层面来分析,伪随机方式可以分为软件伪随机方式和硬件伪随机方式

软件伪随机方式

软件伪随机方式就是按照某种算法来实现伪随机来解决问题。常见的算法如下:

Blum-Micali算法

互补乘法

逆向同余发生器

ISAAC(密码)

滞后斐波纳契发电机

线性同余发生器 - 具有历史意义

线性反馈移位寄存器

最大周期性倒数

Mersenne Twister

中间方法

MIXMAX发生器

乘以携带

Naor-Reingold伪随机函数

Park-Miller随机数发生器

PCG

RC4 PRGA

硬件伪随机方式就是硬件实现伪随机来解决问题。以下是生产硬件随机数生成器的公司列表。

Araneus Alea

ComScire1

熵键

Fox-IT FoxRandomCard

ID Quantique

英特尔810/815/840 / 845G芯片组

Intel RdRand指令

LETech

QuintessenceLabs

TectroLabs

RNG98

威盛挂锁发动机

BitBabbler

应用在Java利用伪随机方式模拟福利彩票。

1)问题分析
福利彩票游戏中,中奖号码由 7 个基本号码组成,使用指定的专用摇奖器摇出。摇奖器内放置标有 01-35 的 35 个号码球,摇奖时依次摇出 7 个号码球,然后,依据设置相应的兑奖规则,(如 7 中 7 、 7 中 6 、 7 中 5 )等,进行兑奖。

2) 类定义
根据问题分析, 为该应用程序创建球类 Bull 、 游戏类 Game 与测试类TestGame 。
同样, 为了能在游戏应用程序中使用随机数, 需要导入 java.util 包的Random 类。 Bull 类定义球号码 point 以及显示球 displayBull 方法。 其中,displayBull 用于显示球号码对应的图片。 Game 类中 playGame 方法用于随机从 35 个球中“摇出” 7 个球,并需要考虑球号不能重复; ruleGame 方法用于设置兑奖规则。

3) 类实现
Game 类中 playGame 方法的关键代码如下:
public void playGame()
{int i=0;
int index =0;
for(i=0;i