24 lines
714 B
Text
24 lines
714 B
Text
F modifier(Float x) -> Float
|
||
R I x < 0.5 {2 * (.5 - x)} E 2 * (x - .5)
|
||
|
||
F modified_random_distribution((Float -> Float) modifier, Int n) -> [Float]
|
||
[Float] d
|
||
L d.len < n
|
||
V prob = random:()
|
||
I random:() < modifier(prob)
|
||
d.append(prob)
|
||
R d
|
||
|
||
V data = modified_random_distribution(modifier, 50'000)
|
||
V bins = 15
|
||
DefaultDict[Int, Int] counts
|
||
L(d) data
|
||
counts[d I/ (1 / bins)]++
|
||
|
||
V mx = max(counts.values())
|
||
print(" BIN, COUNTS, DELTA: HISTOGRAM\n")
|
||
Float? last
|
||
L(b, count) sorted(counts.items())
|
||
V delta = I last == N {‘N/A’} E String(count - last)
|
||
print(‘ #2.2, #4, #4: ’.format(Float(b) / bins, count, delta)‘’(‘#’ * Int(40 * count / mx)))
|
||
last = count
|