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 ⎸