minecraft-src/net/minecraft/world/level/levelgen/BitRandomSource.java
2025-07-04 01:41:11 +03:00

59 lines
1.1 KiB
Java

package net.minecraft.world.level.levelgen;
import net.minecraft.util.RandomSource;
public interface BitRandomSource extends RandomSource {
float FLOAT_MULTIPLIER = 5.9604645E-8F;
double DOUBLE_MULTIPLIER = 1.110223E-16F;
int next(int size);
@Override
default int nextInt() {
return this.next(32);
}
@Override
default int nextInt(int bound) {
if (bound <= 0) {
throw new IllegalArgumentException("Bound must be positive");
} else if ((bound & bound - 1) == 0) {
return (int)((long)bound * this.next(31) >> 31);
} else {
int i;
int j;
do {
i = this.next(31);
j = i % bound;
} while (i - j + (bound - 1) < 0);
return j;
}
}
@Override
default long nextLong() {
int i = this.next(32);
int j = this.next(32);
long l = (long)i << 32;
return l + j;
}
@Override
default boolean nextBoolean() {
return this.next(1) != 0;
}
@Override
default float nextFloat() {
return this.next(24) * 5.9604645E-8F;
}
@Override
default double nextDouble() {
int i = this.next(26);
int j = this.next(27);
long l = ((long)i << 27) + j;
return l * 1.110223E-16F;
}
}