Proper Xoshiro256 initialization with 256 bit seed
This commit is contained in:
parent
1a52864c4e
commit
b8291c7e1c
@ -9,11 +9,12 @@ import net.minecraft.world.level.levelgen.RandomSupport
|
||||
import java.lang.StringBuilder
|
||||
import java.util.random.RandomGenerator
|
||||
|
||||
class Xoshiro256SSRandom(
|
||||
class Xoshiro256SSRandom private constructor(
|
||||
private var s0: Long,
|
||||
private var s1: Long,
|
||||
private var s2: Long,
|
||||
private var s3: Long,
|
||||
marker: Nothing?
|
||||
) : RandomGenerator, RandomSource {
|
||||
private val gaussian = MarsagliaPolarGaussian(this)
|
||||
|
||||
@ -26,11 +27,17 @@ class Xoshiro256SSRandom(
|
||||
) { "Xoshiro can't operate with seed being entirely zero" }
|
||||
}
|
||||
|
||||
constructor(seed: Long) : this(1L, 2L, 3L, 4L) {
|
||||
constructor(s0: Long, s1: Long, s2: Long, s3: Long) : this(s0, s1, s2, s3, null) {
|
||||
// discard some values so generator can get going if provided seed was "weak"
|
||||
for (i in 0 until 32)
|
||||
nextLong()
|
||||
}
|
||||
|
||||
constructor(seed: Long) : this(1L, 2L, 3L, 4L, null) {
|
||||
setSeed(seed)
|
||||
}
|
||||
|
||||
constructor() : this(RandomSupport.generateUniqueSeed(), RandomSupport.generateUniqueSeed(), RandomSupport.generateUniqueSeed(), RandomSupport.generateUniqueSeed())
|
||||
constructor() : this(RandomSupport.generateUniqueSeed(), RandomSupport.generateUniqueSeed(), RandomSupport.generateUniqueSeed(), RandomSupport.generateUniqueSeed(), null)
|
||||
|
||||
override fun setSeed(seed: Long) {
|
||||
val rng = LCG64Random(seed)
|
||||
|
Loading…
Reference in New Issue
Block a user