期望值 Expected Values: 一个离散随机变量X的期望值,基本上就是平均值(μ). 我们也可以称这是X的数学期望(或简称期望).
感觉他说得不对,期望是各个可能出现的结果乘以对于的概率的值的和.
基本上hackerrank这里写得不能再模糊了,我完全不明白
"The expected value of a discrete random variable, , is more or less another way of referring to the mean (). We can also refer to this as the mathematical expectation (or just the expectation) of . "
查了维基, 大概有点概念
"是试验中每次可能的结果乘以其结果概率的总和"
例如,掷一枚公平的六面骰子,其每次“点数”的期望值是3.5,计算如下:
方差 Variance δ2: 方差是从离散随机变量X的期望μ中得到的X的值波动程度的一种平均度量. 你可以认为它是随机变量值和平均值的差的期望(求平均值).给定一个n个元素的数据集X:
其中xi是S的第i个元素而μ是S所有元素的平均值.
标准差 δ
标准差量化一个数据集中变化波动的总和, 给定一个n元素的数据集X:
其中xi是S的第i个元素而μ是S所有元素的平均值.
目标
给定一个含N个整数的数组X, 计算和打印出其标准差, 你的答案应该精确到小数点后一位(例如,12.3). 标准差的允许误差(error)在±0.1之间.
输入格式
第一行是一个整数N,表示输入数组的元素数量.
第二行包含N个空格分隔的整数,表示数组中的各个元素
约束条件
- 5 <= N <= 100
- 0 < xi <= 105, xi是数组X中第i个元素.
输出格式
输出标准差到新的一行中, 精确到小数点后一位(例如:12.3)
示例输入
5
10 40 30 50 20
示例输出
14.1
示例解析
第一, 我们找到平均值
- (x0 - μ)2 = (10 - 30)2 = 400
- (x1 - μ)2 = (40 - 30)2 = 100
- (x2 - μ)2 = (30 - 30)2 = 0
- (x3 - μ)2 = (50 - 30)2 = 400
- (x4 - μ)2 = (20 - 30)2 = 100
现在我们计算方差∑N-1i=0(xi - μ)2 = 400 + 100 + 0 + 400 + 100 = 1000, so:
最后舍入到小数点后一位, 答案是14.1
python
def standard_deviation():
n = int(input())
X = [int(x) for x in input().split(" ")]
mean = sum(X) / n
print("{0:.1f}".format(sqrt(sum([(x - mean) ** 2 for x in X]) / n)))
if __name__ == '__main__':
standard_deviation()
java
import java.io.*;
import java.util.*;
import java.util.stream.*;
public class Solution {
public static void main(String[] args) {
try (Scanner scan = new Scanner(System.in)) {
int n = scan.nextInt();
scan.nextLine();
int[] X = Stream.of(scan.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
final double mean = IntStream.of(X).average().getAsDouble();
System.out.printf("%.1f\n", Math.sqrt(IntStream.of(X).mapToDouble(i -> (i - mean) * (i - mean)).sum() / (double) X.length));
}
}
}
scala
object Solution {
def main(args: Array[String]) {
import java.util.Scanner
val scan: Scanner = new Scanner(System.in)
try {
val n: Int = scan.nextInt
scan.nextLine()
val X: Array[Int] = scan.nextLine().split(" ").map(_.toInt).toArray
val mean: Double = X.sum / X.length.toDouble
printf("%.1f\n", Math.sqrt(X.map(x => (x - mean) * (x - mean)).sum / X.length))
} finally {
scan.close()
}
}
}
网友评论