如何在Java8+并行流中创建可复制的随机数?
例子:
Random r = new Random(1337);
Arrays.stream(new int[]{1,2,3})
.parallel()
.map(i -> i + r.nextInt(10))
.forEach(i -> System.out.println(i));
``` `Random` 以及 `ThreadLocalRandom` 如果我执行了几次,就不会生成相同的序列。
我期望的结果是,如果我多次执行这个代码段,我总是得到相同的输出。我不需要一个随机的整数序列。我需要相同的随机数是为相同的 `i` .
1条答案
按热度按时间wwwo4jvm1#
更新:
根据霍尔格的宝贵意见,以下是正确的做法:
使用
i
作为种子,即。.map(i -> i + new Random(i).nextInt(10))
对于一个特定的变量,仍然可以重复地得到相同的随机数i
,但不是new Random(1337).nextInt(10)
.原始答案:
按以下步骤操作:
演示: