Normal distribution
define ฯ = Num.tau
func normdist (m, ฯ) {
var r = sqrt(-2 * 1.rand.log)
var ฮ = (ฯ * 1.rand)
r * ฮ.cos * ฯ + m
}
var size = 100_000
var mean = 50
var stddev = 4
var dataset = size.of { normdist(mean, stddev) }
var m = (dataset.sum / size)
say ("m: #{m}")
var ฯ = sqrt(dataset ยป**ยป 2 -> sum / size - m**2)
say ("s: #{ฯ}")
var hash = Hash()
dataset.each { |n| hash{ n.round } := 0 ++ }
var scale = (180 * stddev / size)
const subbar = < โธ โ โ โ โ โ โ โ โ >
for i in (hash.keys.map{.to_i}.sort) {
var x = (hash{i} * scale)
var full = x.int
var part = (8 * (x - full))
say (i, "\t", 'โ' * full, subbar[part])
}
Output:
m: 50.0044648656132082719355525236118745075786781776
s: 3.98637441101167732229937662764717350787129665319
32 โธ
33 โธ
34 โธ
35 โธ
36 โ
37 โ
38 โ
39 โโ
40 โโโโ
41 โโโโโโ
42 โโโโโโโโโโ
43 โโโโโโโโโโโโโโโโ
44 โโโโโโโโโโโโโโโโโโโโโโโโธ
45 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
46 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
47 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
48 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
49 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโธ
50 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
51 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
52 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
53 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
54 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
55 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
56 โโโโโโโโโโโโโโโโโโโโโโโโ
57 โโโโโโโโโโโโโโโโ
58 โโโโโโโโโโ
59 โโโโโโโธ
60 โโโโ
61 โโ
62 โ
63 โ
64 โ
65 โธ
66 โธ
67 โธ
68 โธ
Last updated