标准差的计算方式:为了得到无偏估计需要在求得的sum之后除以N-1而不是N。
背包的使用:foreach语句使用某种排序方式历遍(具体哪种不需要知道)
控制台手动停止循环:ctrl+D
代码:
public class Stats {
public static void
main(String [] args){
Bag<Double> numbers =
new Bag<>()
;
while (!StdIn.
isEmpty()){
numbers.add(StdIn.
readDouble())
;
}
int N = numbers.size()
;
//这个是获得的总数
double sum =
0.0
;
for (
double x : numbers){
sum += x
;
}
double mean = sum / N
;
sum =
0.0
;
//为了省一个变量,再次使用方便
for (
double x : numbers){
sum += (x - mean) * (x - mean)
;
}
double std = Math.
sqrt(sum/(N -
1))
;
StdOut.
printf(
"Mean: %.2f
\n
"
, mean)
;
StdOut.
printf(
"Std dev: %.2f
\n
"
,std)
;
}
}