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

Class RandomCascade

src/main/java/trace/random/RandomCascade.kt:3–75  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1package trace.random
2
3class RandomCascade {
4 val r = mutableListOf<Random>()
5 val h = mutableListOf<Double>()
6 val a = mutableListOf<Double>()
7
8 constructor() {
9 r.addAll(mutableListOf(Random(), Random(), Random(), Random()))
10 h.addAll(mutableListOf(1.0, 2.0, 3.0, 4.0))
11 a.addAll(mutableListOf(1.0, 1 / 2.0, 1 / 4.0, 1 / 8.0))
12 r.forEach { it.nextDouble(Math.random()) }
13 }
14
15 constructor(num: Int) {
16 var o = 1.0
17 for (n in 0 until num) {
18 r.add(Random())
19 h.add(o)
20 a.add(1 / (Math.pow(2.0, o)))
21 o += 1
22 }
23 r.forEach { it.nextDouble(Math.random()) }
24 }
25
26 constructor(num: Int, seed: String) {
27 var o = 1.0
28 for (n in 0 until num) {
29 r.add(Random(seed, n.toDouble()))
30 h.add(o)
31 a.add(1 / (Math.pow(2.0, o)))
32 o += 1
33 }
34 r.forEach { it.nextDouble(Math.random()) }
35 }
36
37
38 constructor(seed: String) {
39 r.addAll(mutableListOf(Random(seed + "0"), Random(seed + "1"), Random(seed + "2"), Random(seed + "3")))
40 h.addAll(mutableListOf(1.0, 2.0, 3.0, 4.0))
41 a.addAll(mutableListOf(1.0, 1 / 2.0, 1 / 4.0, 1 / 8.0))
42 r.forEachIndexed { index, ran -> ran.nextDouble((seed + "$index").hashCode() / 2000.0) }
43 }
44
45 constructor(seed: String, num: Double) {
46 r.addAll(mutableListOf(Random(seed + "0", num), Random(seed + "1", num), Random(seed + "2", num), Random(seed + "3", num)))
47 h.addAll(mutableListOf(1.0, 2.0, 3.0, 4.0))
48 a.addAll(mutableListOf(1.0, 1 / 2.0, 1 / 4.0, 1 / 8.0))
49 r.forEach { it.nextDouble(Math.random()) }
50 r.forEachIndexed { index, ran -> ran.nextDouble(num + (seed + "$index").hashCode() / 2000.0) }
51 }
52
53 fun nextDouble(increment: Double): Double {
54 return r.mapIndexed { index, rr -> rr.nextDouble(increment * h[index]) * a[index] }.sum()
55 }
56
57 fun nextGaussian(increment: Double): Double {
58 return r.mapIndexed { index, rr -> rr.nextGaussian(increment * h[index]) * a[index] }.sum()
59 }
60

Callers 1

forkMethod · 0.85

Calls 6

RandomClass · 0.85
addAllMethod · 0.45
forEachMethod · 0.45
nextDoubleMethod · 0.45
addMethod · 0.45
hashCodeMethod · 0.45

Tested by

no test coverage detected