栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

总结:Java 17 新特性 - 增强的伪随机数生成器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

总结:Java 17 新特性 - 增强的伪随机数生成器

本文是对官方文档(https://openjdk.org/jeps/356)的概括总结,更详细的内容请看官方文档的不完全翻译https://blog.csdn.net/weixin_38833041/article/details/125464143

文章目录
  • 简介
  • 新特点
      • 提供了一个新接口 RandomGenerator
      • 提供了一个新类 RandomGeneratorFactory
      • 提供了四个新的专用 RandomGenerator 接口

简介

为伪随机数生成器 (PRNG) 提供新的接口类型和实现,包括可跳转的 PRNG 和另一类可拆分的 PRNG 算法 (LXM)。

新特点 提供了一个新接口 RandomGenerator

它为所有现有的和新的 PRNG 提供了一个统一的 API。 RandomGenerators 提供名为 ints、longs、doubles、nextBoolean、nextInt、nextLong、nextDouble 和 nextFloat 的方法,以及它们当前的所有参数的变化。从而更容易在应用程序中互换使用各种 PRNG 算法。例如:

static void testRandomGenerator (RandomGenerator randomGenerator){
        IntStream ints = randomGenerator.ints(50,0,10);
        int[] randoms = ints.toArray();
        for (int i:randoms) {
            System.out.println(i);
        }
        System.out.println("random count = "+randoms.length);
}
public static void main(String[] args) {
        testRandomGenerator(new Random());
        testRandomGenerator(new SplittableRandom());
        testRandomGenerator(ThreadLocalRandom.current());
}
提供了一个新类 RandomGeneratorFactory

它用于定位和构造 RandomGenerator 实现的实例。

static void testRandomGeneratorFactory(String randomGeneratorName){
        RandomGeneratorFactory factory = RandomGeneratorFactory.of(randomGeneratorName);
        RandomGenerator generator = factory.create();
        testRandomGenerator(generator);
}
public static void main(String[] args) {
        testRandomGeneratorFactory("Random");
        testRandomGeneratorFactory("L128X128MixRandom");
        testRandomGeneratorFactory("Xoshiro256PlusPlus");
}

上述方法还支持如下LXM 系列 PRNG 算法:

  • L32X64MixRandom
  • L32X64StarStarRandom
  • L64X128MixRandom
  • L64X128StarStarRandom
  • L64X256MixRandom
  • L64X1024MixRandom
  • L128X128MixRandom
  • L128X256MixRandom
  • L128X1024MixRandom

以及广泛使用的 PRNG 算法

  • Xoshiro256PlusPlus
  • Xoroshiro128PlusPlus
提供了四个新的专用 RandomGenerator 接口
  • SplittableRandomGenerator 扩展了 RandomGenerator 并且还提供
    名为 split 和 splits 的方法。 可拆分性允许用户从现有的 RandomGenerator 生成一个新的 RandomGenerator,这通常会产生统计上独立的结果。
  • JumpableRandomGenerator 扩展了RandomGenerator 并且还提供
    名为 jump 和 jumps 的方法。 可跳跃性允许用户跳到中等数量的抽签。
  • LeapableRandomGenerator 扩展了 RandomGenerator 并且还提供
    方法名为leap和leaps的方法。 可跳跃性允许用户跳过大量的抽签。
  • ArbitrarilyJumpableRandomGenerator 扩展了 LeapableRandomGenerator 并且还提供了jump 和 jumps 的方法额外的变体,允许指定任意跳跃距离。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/993119.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号