Provide reinitialize protected methods for inheritors
This commit is contained in:
parent
d273586a3d
commit
6272e753e2
@ -29,6 +29,15 @@ open class JSF32Random protected constructor(
|
|||||||
* [https://www.pcg-random.org/posts/bob-jenkins-small-prng-passes-practrand.html](https://www.pcg-random.org/posts/bob-jenkins-small-prng-passes-practrand.html)
|
* [https://www.pcg-random.org/posts/bob-jenkins-small-prng-passes-practrand.html](https://www.pcg-random.org/posts/bob-jenkins-small-prng-passes-practrand.html)
|
||||||
*/
|
*/
|
||||||
constructor(seed: Int) : this(SEED0_INIT, seed, seed, seed, null) {
|
constructor(seed: Int) : this(SEED0_INIT, seed, seed, seed, null) {
|
||||||
|
reinitialize(seed)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected fun reinitialize(seed: Int) {
|
||||||
|
s0 = SEED0_INIT
|
||||||
|
s1 = seed
|
||||||
|
s2 = seed
|
||||||
|
s3 = seed
|
||||||
|
|
||||||
for (i in 0 until 20)
|
for (i in 0 until 20)
|
||||||
round()
|
round()
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package ru.dbotthepony.kommons.random
|
package ru.dbotthepony.kommons.random
|
||||||
|
|
||||||
|
import ru.dbotthepony.kommons.random.JSF32Random.Companion
|
||||||
import java.util.random.RandomGenerator
|
import java.util.random.RandomGenerator
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,6 +35,15 @@ open class JSF64Random(
|
|||||||
* [https://www.pcg-random.org/posts/bob-jenkins-small-prng-passes-practrand.html](https://www.pcg-random.org/posts/bob-jenkins-small-prng-passes-practrand.html)
|
* [https://www.pcg-random.org/posts/bob-jenkins-small-prng-passes-practrand.html](https://www.pcg-random.org/posts/bob-jenkins-small-prng-passes-practrand.html)
|
||||||
*/
|
*/
|
||||||
constructor(seed: Long) : this(SEED0_INIT, seed, seed, seed, null) {
|
constructor(seed: Long) : this(SEED0_INIT, seed, seed, seed, null) {
|
||||||
|
reinitialize(seed)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected fun reinitialize(seed: Long) {
|
||||||
|
s0 = SEED0_INIT
|
||||||
|
s1 = seed
|
||||||
|
s2 = seed
|
||||||
|
s3 = seed
|
||||||
|
|
||||||
for (i in 0 until 20)
|
for (i in 0 until 20)
|
||||||
round()
|
round()
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,22 @@ open class ShishuaRandom() : RandomGenerator {
|
|||||||
engine.initialize(longArrayOf(rng.nextLong(), rng.nextLong(), rng.nextLong(), rng.nextLong()))
|
engine.initialize(longArrayOf(rng.nextLong(), rng.nextLong(), rng.nextLong(), rng.nextLong()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected fun reinitialize(seed: Long) {
|
||||||
|
val rng = PCG32Random(seed)
|
||||||
|
engine.initialize(longArrayOf(rng.nextLong(), rng.nextLong(), rng.nextLong(), rng.nextLong()))
|
||||||
|
index = 16
|
||||||
|
}
|
||||||
|
|
||||||
|
protected fun reinitialize(seed0: Long, seed1: Long, seed2: Long, seed3: Long) {
|
||||||
|
engine.initialize(longArrayOf(seed0, seed1, seed2, seed3))
|
||||||
|
index = 16
|
||||||
|
}
|
||||||
|
|
||||||
|
protected fun reinitialize(seed: LongArray) {
|
||||||
|
engine.initialize(seed)
|
||||||
|
index = 16
|
||||||
|
}
|
||||||
|
|
||||||
protected fun round(): Long {
|
protected fun round(): Long {
|
||||||
if (index == 16) {
|
if (index == 16) {
|
||||||
index = 0
|
index = 0
|
||||||
|
Loading…
Reference in New Issue
Block a user