mirror of
https://github.com/Eaglercraft-TeaVM-Fork/eagler-teavm.git
synced 2024-12-22 16:14:10 -08:00
Moved next origin/bound implementations from TThreadLocalRandom to TRandom.
This commit is contained in:
parent
f57af7631b
commit
2d73403b9a
|
@ -75,15 +75,54 @@ public class TRandom extends TObject implements TSerializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public int nextInt(int origin, int bound) {
|
public int nextInt(int origin, int bound) {
|
||||||
return origin + nextInt() * (bound - origin);
|
if (origin >= bound) {
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
|
int range = bound - origin;
|
||||||
|
if (range > 0) {
|
||||||
|
return nextInt(range) + origin;
|
||||||
|
} else {
|
||||||
|
while (true) {
|
||||||
|
int value = nextInt();
|
||||||
|
if (value >= origin && value < bound) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public long nextLong() {
|
public long nextLong() {
|
||||||
return ((long) nextInt() << 32) | nextInt();
|
return ((long) nextInt() << 32) | nextInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long nextLong(long bound) {
|
||||||
|
if (bound <= 0) {
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
|
while (true) {
|
||||||
|
long value = nextLong();
|
||||||
|
long result = value % bound;
|
||||||
|
if (value - result + (bound - 1) < 0) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public long nextLong(long origin, long bound) {
|
public long nextLong(long origin, long bound) {
|
||||||
return origin + nextLong() * (bound - origin);
|
if (origin >= bound) {
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
|
long range = bound - origin;
|
||||||
|
if (range > 0) {
|
||||||
|
return nextLong(range) + origin;
|
||||||
|
} else {
|
||||||
|
while (true) {
|
||||||
|
long value = nextLong();
|
||||||
|
if (value >= origin && value < bound) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean nextBoolean() {
|
public boolean nextBoolean() {
|
||||||
|
@ -94,8 +133,12 @@ public class TRandom extends TObject implements TSerializable {
|
||||||
return (float) nextDouble();
|
return (float) nextDouble();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public float nextFloat(float bound) {
|
||||||
|
return (float) nextDouble(bound);
|
||||||
|
}
|
||||||
|
|
||||||
public float nextFloat(float origin, float bound) {
|
public float nextFloat(float origin, float bound) {
|
||||||
return origin + nextFloat() * (bound - origin);
|
return (float) nextDouble(origin, bound);
|
||||||
}
|
}
|
||||||
|
|
||||||
public double nextDouble() {
|
public double nextDouble() {
|
||||||
|
@ -106,8 +149,22 @@ public class TRandom extends TObject implements TSerializable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double nextDouble(double bound) {
|
||||||
|
if (bound <= 0) {
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
|
double value = nextDouble() * bound;
|
||||||
|
if (value == bound) {
|
||||||
|
value = Math.nextDown(value);
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
public double nextDouble(double origin, double bound) {
|
public double nextDouble(double origin, double bound) {
|
||||||
return origin + nextDouble() * (bound - origin);
|
if (origin >= bound) {
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
|
return origin + nextDouble(bound - origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Import(name = "teavm_rand")
|
@Import(name = "teavm_rand")
|
||||||
|
@ -294,16 +351,6 @@ public class TRandom extends TObject implements TSerializable {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private long nextLong(long limit) {
|
|
||||||
while (true) {
|
|
||||||
long value = nextLong();
|
|
||||||
long result = value % limit;
|
|
||||||
if (value - result + (limit - 1) < 0) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public TLongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound) {
|
public TLongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound) {
|
||||||
if (streamSize < 0 || randomNumberOrigin >= randomNumberBound) {
|
if (streamSize < 0 || randomNumberOrigin >= randomNumberBound) {
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
|
|
|
@ -31,69 +31,4 @@ public class TThreadLocalRandom extends TRandom {
|
||||||
public void setSeed(long seed) {
|
public void setSeed(long seed) {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int nextInt(int origin, int bound) {
|
|
||||||
if (origin >= bound) {
|
|
||||||
throw new IllegalArgumentException();
|
|
||||||
}
|
|
||||||
int range = bound - origin;
|
|
||||||
if (range > 0) {
|
|
||||||
return nextInt(range) + origin;
|
|
||||||
} else {
|
|
||||||
while (true) {
|
|
||||||
int value = nextInt();
|
|
||||||
if (value >= origin && value < bound) {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public long nextLong(long bound) {
|
|
||||||
if (bound <= 0) {
|
|
||||||
throw new IllegalArgumentException();
|
|
||||||
}
|
|
||||||
while (true) {
|
|
||||||
long value = nextLong();
|
|
||||||
long result = value % bound;
|
|
||||||
if (value - result + (bound - 1) < 0) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public long nextLong(long origin, long bound) {
|
|
||||||
if (origin >= bound) {
|
|
||||||
throw new IllegalArgumentException();
|
|
||||||
}
|
|
||||||
long range = bound - origin;
|
|
||||||
if (range > 0) {
|
|
||||||
return nextLong(range) + origin;
|
|
||||||
} else {
|
|
||||||
while (true) {
|
|
||||||
long value = nextLong();
|
|
||||||
if (value >= origin && value < bound) {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public double nextDouble(double bound) {
|
|
||||||
if (bound <= 0) {
|
|
||||||
throw new IllegalArgumentException();
|
|
||||||
}
|
|
||||||
double value = nextDouble() * bound;
|
|
||||||
if (value == bound) {
|
|
||||||
value = Math.nextDown(value);
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double nextDouble(double origin, double bound) {
|
|
||||||
if (origin >= bound) {
|
|
||||||
throw new IllegalArgumentException();
|
|
||||||
}
|
|
||||||
return origin + nextDouble(bound - origin);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user