MCPcopy Create free account
hub / github.com/OpenEndedGroup/Field2 / Random

Class Random

src/main/java/trace/random/Random.kt:6–107  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4
5class Random {
6 var source: MersenneTwisterFast
7
8 var forked = 0
9
10 var a: Double = 0.0
11 var b: Double = 0.0
12 var bi = -4
13 var c: Double = 0.0
14 var d: Double = 0.0
15
16 var T = 0.0
17
18 constructor() {
19 source = MersenneTwisterFast()
20 }
21
22 constructor(seed: String) {
23 source = MersenneTwisterFast(seed.hashCode().toLong())
24 }
25
26 constructor(seed: String, num: Double) {
27 source = MersenneTwisterFast(seed.hashCode().toLong().xor(num.hashCode().toLong()))
28 }
29
30 fun fork(): Random {
31 val v = Random()
32
33 val ns = source.mt!!.copyOf()
34 ns[10] = forked++
35 v.source = MersenneTwisterFast(ns)
36
37 v.a = a
38 v.b = b
39 v.bi = bi
40 v.c = c
41 v.d = d
42 v.T = T
43
44 return v
45 }
46
47 fun nextDouble(): Double {
48 while (bi < 0)
49 nextDouble(1.0)
50
51 bi = 0
52 T = 0.0
53 b = source.nextDouble()
54 return b * 2 - 1
55 }
56
57 fun nextDouble(increment: Double): Double {
58
59 val i = (if (increment > 4) increment % 4 else increment)/4.0
60 T += i
61 while (bi < Math.floor(T)) {
62 a = b
63 bi += 1

Callers 3

RandomCascadeClass · 0.85
mainMethod · 0.85
forkMethod · 0.85

Calls 2

MersenneTwisterFastClass · 0.85
hashCodeMethod · 0.45

Tested by

no test coverage detected