22 lines
639 B
Scala
22 lines
639 B
Scala
def mean(a:Array[Double])=a.sum / a.size
|
|
def stddev(a:Array[Double])={
|
|
val sum = a.fold(0.0)((a, b) => a + math.pow(b,2))
|
|
math.sqrt((sum/a.size) - math.pow(mean(a),2))
|
|
}
|
|
def hist(a:Array[Double]) = {
|
|
val grouped=(SortedMap[Double, Array[Double]]() ++ (a groupBy (x => math.rint(x*10)/10)))
|
|
grouped.map(v => (v._1, v._2.size))
|
|
}
|
|
def printHist(a:Array[Double])=for((g,v) <- hist(a)){
|
|
println(s"$g: ${"*"*(205*v/a.size)} $v")
|
|
}
|
|
|
|
for(n <- Seq(100,1000,10000)){
|
|
val a = Array.fill(n)(Random.nextDouble)
|
|
println(s"$n numbers")
|
|
println(s"Mean: ${mean(a)}")
|
|
println(s"StdDev: ${stddev(a)}")
|
|
printHist(a)
|
|
println
|
|
}
|