`

随机数生成算法

阅读更多

chrome 有很多场景我们需要产生随机数。一般是采用线性同余法。

一。讲讲JAVA的Random函数吧。

Random在初始化时会产生一个种子。默认以seedUniquifier+System.nanoTime()作为种子。此后seedUniquifier会自增1.以便下一次Random时和这次不相同。seedUniquifier起初是一个常量。值为8682522807148012L.随机数产生过程为;

1。产生seend,根据系统时间.seed=++seedUniquifier + System.nanoTime(),seedUniquifier =8682522807148012L;

2.seed = (seed ^ multiplier) & mask;//multiplier = 0x5DEECE66DL;,mask = (1L << 48) - 1;

3.调用next方法可以生成一个随机数。先用上面的seed算出一个新的seed,如 nextseed = (oldseed * multiplier + addend) & mask;// addend = 0xBL;

4.(int)(nextseed >>> (48 - bits));//bits为需要产生的数的位数。如int型为32.

 

 

其实JAVA的Random随机数生成算法还是很弱的。属于线性适配随机发生器

二、Windows平台下随机数生成算法

首先建立一个动态数据缓冲池,缓冲池被释放之前,会不停的收集windows平台下众多的物理随机信息,包括:①当前进程的ID;②当前线程的ID;③系统引导以来的时钟数;④各种高精度的性能计数器;⑤用户环境模块的MD4(Message Digest 4,信息摘要4)散列,包括用户名,计算机名和搜索路径等;⑥高精度的内部CPU计算器,如RDISC,ROMSR,RDPM等;⑦底层系统信息,如空闲时间,内检时刻,中断时间,提交限定,页面计数,缓存计数,操作系统外部计数、键盘、鼠标信息等。

当程序需要随机数时,从这些缓冲池中读取这些物理信息,因为这些信息大部分均从物理量读取而来,所以有不可预测性,可以满足随机性的要求。

分享到:
评论

相关推荐

    随机数生成算法,数值算法

    在IT领域,随机数生成算法扮演着至关重要的角色,尤其在模拟、加密、游戏开发、统计计算和各种科学计算中。随机数,虽然被称为“随机”,实际上是由确定性的算法生成的,这些算法确保了结果的不可预测性,同时满足...

    正态散布随机数生成算法.pdf

    正态散布随机数生成算法 概率论与数理统计课程设计的主要任务是生成服从正态散布的随机数。要取得服从正态散布的随机数就没那么容易了。通常情况下,我们可以使用三个方法来生成服从正态散布的随机数:利用散布函数...

    随机数生成_随机数生成_随机数生成_

    线性同余法是最简单的随机数生成算法,但其周期短,易产生重复序列。Mersenne Twister是一种广泛应用的高性能随机数生成器,具有很长的周期和良好的统计性质。ISAAC则是一种加密级的随机数生成器,适用于需要高度...

    随机数生成算法java

    随机数生成算法随机数生成算法随机数生成算法随机数生成算法随机数生成算法随机数生成算法随机数生成算法随机数生成算法随机数生成算法随机数生成算法随机数生成算法随机数生成算法随机数生成算法随机数生成算法...

    0-100随机数生成器

    "roll-native"可能是生成的可执行文件名,暗示了这个随机数生成器可能采用了某种滚动或循环的机制,或者它代表了一种特定的随机数生成算法。在某些情况下,"roll"一词也可能意味着更新或迭代,意味着这是随机数生成...

    CPP随机数_随机数生成_

    `随机数生成算法.dsp` 和 `随机数生成算法.ncb` 可能是Visual Studio项目文件,它们包含了构建和组织源代码的配置信息。`随机数生成算法.plg` 可能是Visual Studio的项目文件历史记录,不包含实际代码,但与项目的...

    五种随机数发生器-C++与MATLAB代码_matlab_tonek9z_随机数_随机数生成办法_

    3. **改变随机数生成器类型**:MATLAB还支持其他随机数生成算法,如`'twister'`(默认)、`'shuffle'`、`'super'`等。可以使用`rng('state', state)`或`rng(type)`来切换或设定随机数生成器类型。 4. **生成特定...

    基于verilog的随机数产生器

    该代码采用了特定的随机数生成算法,并通过Verilog语言实现了随机数的生成和输出功能。 适用人群:该代码适用于具有FPGA编程和Verilog语言基础的硬件工程师、电子工程师以及对数字电路设计和随机数生成算法感兴趣的...

    随机数生成分析软件

    本软件是一个基于VC++编写的随机数生成与分析工具,它提供了对随机数生成算法的实现以及对生成的随机数进行统计分析的功能。 首先,随机数生成是编程中的一个基础概念。随机数是指在一定范围内无法被预测的数值,...

    C 代码 实现具有拆分功能的随机数生成器 (RNG), 允许计算多个独立的流.rar

    2. **算法实现**:实现随机数生成算法,如线性同余法`x = (ax + c) % m`,其中`a`, `c`, `m`为常数,`x`为当前随机数。Mersenne Twister等更高级的算法会提供更好的统计特性。 3. **拆分功能**:为了实现拆分,RNG...

    随机数生产算法

    C语言随机数生成函数,非AD采用生成算法,效果挺不错。来源自ugui中代码

    很棒的随机数生成器.zip

    在给定的文件列表中,Rondem.cpp 可能是实现随机数生成算法的源代码文件,它可能使用了一种特定的PRNG算法。伪随机数生成器基于确定性的数学算法,虽然输出看似随机,但实际上是可预测的,只要知道初始的种子(seed...

    随机数生成器源码

    随机数生成器是计算机科学中的一个重要工具,广泛应用于各种领域,如模拟仿真、加密算法、游戏开发、统计分析等。本资源提供了一个随机数生成器的源码以及打包好的软件,用户可以根据自己的需求生成指定区间内的任意...

    JS实现随机数生成算法示例代码

    JavaScript作为一门广泛应用于网页开发的脚本语言,其内置的Math对象提供了生成随机数的方法,但在一些特殊的场景下,标准的随机数生成方法可能无法满足需求,此时就需要实现自定义的随机数生成算法。本文介绍了一个...

    一种基于FPGA的高斯随机数生成器的设计与实现.pdf

    2. 状态转换逻辑结构:提出了易于硬件实现的状态转换逻辑结构,这是指设计中的一个核心模块,负责高斯随机数生成算法的实现。状态转换逻辑结构的简化和优化对于提升FPGA内部逻辑处理速度和效率至关重要。 3. 均匀...

    动态随机数的算法可用于抽样算法

    ### 动态随机数生成算法的关键知识点 #### 1. 引言 在现代信息安全领域,高质量随机数的生成对于确保密码系统的安全性至关重要。尤其是在数据加密、密钥管理、电子商务、数字签名以及身份验证等场景中,需要使用...

    suijishu.rar_简单随机数_随机数生成

    3. **随机数质量**:不同的随机数生成算法有不同的质量,有些更适合于安全性要求高的应用,比如加密,而有些则适用于需要快速生成近似随机性的场景。在Python中,`numpy.random`模块提供了更高质量的随机数生成,...

    一种软件生成真随机数的算法研究

    线性同余法是一种常用的随机数生成算法,可以通过以下公式表示:\(X_{n+1} = (aX_n + c) \mod m\),其中\(X_n\)是当前状态,\(X_{n+1}\)是下一个状态,\(a\), \(c\), 和 \(m\) 是常数。 4. **序列转化**:将处理后...

    java 语言实现的随机数生成算法

    Java语言实现的随机数生成算法是程序开发中常见的需求,主要用在模拟、测试和游戏等领域。Java标准库提供了一个名为`java.util.Random`的类,可以方便地生成各种类型的随机数。在给出的代码示例中,首先展示了如何...

Global site tag (gtag.js) - Google Analytics