28 lines
629 B
Tcl
28 lines
629 B
Tcl
package require Tcl 8.5
|
|
proc stats {size} {
|
|
set sum 0.0
|
|
set sum2 0.0
|
|
for {set i 0} {$i < $size} {incr i} {
|
|
set r [expr {rand()}]
|
|
|
|
incr histo([expr {int(floor($r*10))}])
|
|
set sum [expr {$sum + $r}]
|
|
set sum2 [expr {$sum2 + $r**2}]
|
|
}
|
|
set mean [expr {$sum / $size}]
|
|
set stddev [expr {sqrt($sum2/$size - $mean**2)}]
|
|
puts "$size numbers"
|
|
puts "Mean: $mean"
|
|
puts "StdDev: $stddev"
|
|
foreach i {0 1 2 3 4 5 6 7 8 9} {
|
|
# The 205 is a magic factor stolen from the Go solution
|
|
puts [string repeat "*" [expr {$histo($i)*205/int($size)}]]
|
|
}
|
|
}
|
|
|
|
stats 100
|
|
puts ""
|
|
stats 1000
|
|
puts ""
|
|
stats 10000
|