2023-07-01 11:58:00 -04:00
|
|
|
|
func generate_statistics(n) {
|
2023-12-16 21:33:55 -08:00
|
|
|
|
var(sum=0, sum2=0)
|
|
|
|
|
|
var hist = 10.of(0)
|
|
|
|
|
|
|
2023-07-01 11:58:00 -04:00
|
|
|
|
n.times {
|
2023-12-16 21:33:55 -08:00
|
|
|
|
var r = 1.rand
|
|
|
|
|
|
sum += r
|
|
|
|
|
|
sum2 += r**2
|
|
|
|
|
|
hist[10*r] += 1
|
2023-07-01 11:58:00 -04:00
|
|
|
|
}
|
2023-12-16 21:33:55 -08:00
|
|
|
|
|
|
|
|
|
|
var mean = sum/n
|
|
|
|
|
|
var stddev = sqrt(sum2/n - mean**2)
|
|
|
|
|
|
|
|
|
|
|
|
say "size: #{n}"
|
|
|
|
|
|
say "mean: #{mean}"
|
|
|
|
|
|
say "stddev: #{stddev}"
|
|
|
|
|
|
|
|
|
|
|
|
var max = hist.max
|
|
|
|
|
|
for i in ^hist {
|
|
|
|
|
|
printf("%.1f:%s\n", 0.1*i, "=" * 70*hist[i]/max)
|
2023-07-01 11:58:00 -04:00
|
|
|
|
}
|
2023-12-16 21:33:55 -08:00
|
|
|
|
print "\n"
|
2023-07-01 11:58:00 -04:00
|
|
|
|
}
|
2023-12-16 21:33:55 -08:00
|
|
|
|
|
2023-07-01 11:58:00 -04:00
|
|
|
|
[100, 1000, 10000].each {|n| generate_statistics(n) }
|