9.1 xorshift算法 您所在的位置:网站首页 amg260奔驰价格 9.1 xorshift算法

9.1 xorshift算法

2023-10-19 14:23| 来源: 网络整理| 查看: 265

  随机数的基本要求是:   1. 能覆盖每个值。假如要在[1,10]之间取随机数,如果能取到1,2,3,4,5,6,7,9,10却取不到8,那这不是一个满足要求的随机数算法。   2. 各个值的概率相等。假使在[1,10]之间取随机数,每个数字被取到的概率都是 1 10 \frac1{10} 101​。   3. 满足“随机性”,就是说不要能看得出规律。如果顺序产生数字肯定能满足上述两点要求,但是就不随机了。   随机数的基本算法,是这样的:   假设随机数函数为f(x),种子为seed。   那么第一个随机数 x 0 x_0 x0​是f(seed).   第二个随机数 x 1 x_1 x1​是 f ( x 0 ) f(x_0) f(x0​),这样一直下去,产生一个随机数序列。   第N个随机数就是fn(seed).   所以这是个递归算法。随机数是一个系列,要得到第N个随机数,只能计算N次。   Marsaglia发明了xorshift算法,用于计算随机数,是运算速度比较快的随机数算法。在Java的ConcurrentSkipListMap和ConcurrentSkipListSet都用到了这种随机数算法。   xorshift伪随机数其基本算法是三个常量x,y,z。一般取值是13,17 和5。代码如下:

package com.youngthing.xorshift; /** * xorshift * created at 04/04/2022 * * @author 花书粉丝 * [email protected] * @since 1.0.0 */ public class RandomGenerator { private int r; public RandomGenerator(int seed) { this.r = seed; } public int next() { r ^= r > 17; r ^= r


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有