37 lines
804 B
CoffeeScript
37 lines
804 B
CoffeeScript
generate_statistics = (n) ->
|
|
hist = {}
|
|
|
|
update_hist = (r) ->
|
|
hist[Math.floor 10*r] ||= 0
|
|
hist[Math.floor 10*r] += 1
|
|
|
|
sum = 0
|
|
sum_squares = 0.0
|
|
|
|
for i in [1..n]
|
|
r = Math.random()
|
|
sum += r
|
|
sum_squares += r*r
|
|
update_hist r
|
|
mean = sum / n
|
|
stddev = Math.sqrt((sum_squares / n) - mean*mean)
|
|
|
|
[n, mean, stddev, hist]
|
|
|
|
display_statistics = (n, mean, stddev, hist) ->
|
|
console.log "-- Stats for sample size #{n}"
|
|
console.log "mean: #{mean}"
|
|
console.log "sdev: #{stddev}"
|
|
for x, cnt of hist
|
|
bars = repeat "=", Math.floor(cnt*300/n)
|
|
console.log "#{x/10}: #{bars} #{cnt}"
|
|
|
|
repeat = (c, n) ->
|
|
s = ''
|
|
s += c for i in [1..n]
|
|
s
|
|
|
|
for n in [100, 1000, 10000, 1000000]
|
|
[n, mean, stddev, hist] = generate_statistics n
|
|
display_statistics n, mean, stddev, hist
|