gpt4 book ai didi

java - Java 中的 Xorshift 随机数

转载 作者:行者123 更新时间:2023-12-02 04:58:30 26 4
gpt4 key购买 nike

我正在尝试实现 xorshift random number algorithm from Wikipedia在 java 。它有一个 C 语言示例,其中包含无符号长整型。鉴于 Java 没有无符号数字,我如何摆脱下面代码中的 Math.abs

我只想要正数。

private static long x = 0;
private static long y = 0;
private static long z = 0;
private static long w = 0;

private static long xorShiftRandom() {
while ((x | y | z | w) == 0) {
Random rand = new Random();

x = rand.nextLong();
y = rand.nextLong();
z = rand.nextLong();
w = rand.nextLong();
}
long t = x ^ (x << 11);
x = y;
y = z;
z = w;
return w = Math.abs(w ^ (w >>> 19) ^ (t ^ (t >>> 8)));
}

最佳答案

Java 中没有无符号,所以这不是一个选项。我认为实际上你的问题是在打印它们时,它们显示为负数。您可以使用十六进制格式 (Long.toHexString()) 来显示无符号值。或者您可以使用更大的容器(例如 BigInteger)来获得无符号十进制表示形式。

编辑:如果 Java 中的 longLong.MIN_VALUE 生成到 Long.MAX_VALUE,则随机数字生成器预计会生成整个域中的数字,而不仅仅是正数(仅是域的一半)。

关于java - Java 中的 Xorshift 随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21460561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com