diff options
author | Matt <mtthw8198@gmail.com> | 2021-06-01 14:18:25 -0700 |
---|---|---|
committer | Matt <mtthw8198@gmail.com> | 2021-06-01 14:18:25 -0700 |
commit | f87217e9a044b0f017d4b821017f697ca6568f42 (patch) | |
tree | aad0a14640e146837c950157750e3ad6cca88ea5 /src/main/java/gregtech/api/objects/XSTR.java | |
parent | 08aa6a7f525eea881a00331bc75f055c3d275c3e (diff) | |
parent | 9555f77feccabf92d3bcc20c985c2060e2455600 (diff) | |
download | GT5-Unofficial-f87217e9a044b0f017d4b821017f697ca6568f42.tar.gz GT5-Unofficial-f87217e9a044b0f017d4b821017f697ca6568f42.tar.bz2 GT5-Unofficial-f87217e9a044b0f017d4b821017f697ca6568f42.zip |
Merge remote-tracking branch 'origin/experimental' into experimental
Diffstat (limited to 'src/main/java/gregtech/api/objects/XSTR.java')
-rw-r--r-- | src/main/java/gregtech/api/objects/XSTR.java | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/main/java/gregtech/api/objects/XSTR.java b/src/main/java/gregtech/api/objects/XSTR.java index 22bcf91dbe..a2c4906345 100644 --- a/src/main/java/gregtech/api/objects/XSTR.java +++ b/src/main/java/gregtech/api/objects/XSTR.java @@ -44,7 +44,7 @@ public class XSTR extends Random { private static final double DOUBLE_UNIT = 0x1.0p-53; // 1.0 / (1L << 53) private static final float FLOAT_UNIT = 0x1.0p-24f; // 1.0f / (1 << 24) private static final AtomicLong seedUniquifier = new AtomicLong(8682522807148012L); - public final static XSTR XSTR_INSTANCE=new XSTR(){ + public static final XSTR XSTR_INSTANCE=new XSTR(){ @Override public synchronized void setSeed(long seed) { if(!Thread.currentThread().getStackTrace()[2].getClassName().equals(Random.class.getName())) @@ -86,10 +86,12 @@ public class XSTR extends Random { public XSTR(long seed) { this.seed = seed; } + @Override public boolean nextBoolean() { return next(1) != 0; } + @Override public double nextDouble() { return (((long)(next(26)) << 27) + next(27)) * DOUBLE_UNIT; } @@ -109,6 +111,7 @@ public class XSTR extends Random { * * @param seed the new seed */ + @Override public synchronized void setSeed(long seed) { this.seed = seed; } @@ -129,6 +132,7 @@ public class XSTR extends Random { * @param nbits * @return */ + @Override public int next(int nbits) { long x = seed; x ^= (x << 21); @@ -140,7 +144,8 @@ public class XSTR extends Random { } boolean haveNextNextGaussian = false; double nextNextGaussian = 0; - synchronized public double nextGaussian() { + @Override + public synchronized double nextGaussian() { // See Knuth, ACP, Section 3.4.1 Algorithm C. if (haveNextNextGaussian) { haveNextNextGaussian = false; @@ -213,6 +218,7 @@ public class XSTR extends Random { * @throws IllegalArgumentException if bound is not positive * @since 1.2 */ + @Override public int nextInt(int bound) { //if (bound <= 0) { //throw new RuntimeException("BadBound"); @@ -238,19 +244,23 @@ public class XSTR extends Random { int out = (int) last % bound; return (out < 0) ? -out : out; } + @Override public int nextInt() { return next(32); } + @Override public float nextFloat() { return next(24) * FLOAT_UNIT; } + @Override public long nextLong() { // it's okay that the bottom word remains signed. return ((long)(next(32)) << 32) + next(32); } + @Override public void nextBytes(byte[] bytes_arr) { for (int iba = 0, lenba = bytes_arr.length; iba < lenba; ) for (int rndba = nextInt(), @@ -258,4 +268,4 @@ public class XSTR extends Random { nba-- > 0; rndba >>= Byte.SIZE) bytes_arr[iba++] = (byte)rndba; } -}
\ No newline at end of file +} |