部品の重さの平均と標準偏差

  • 数と計算
  • 問題 18
  • ふつう
  • 目安 31 分

工場で量った N 個の部品の重さから、平均と標準偏差を小数第 6 位まで出す。平均を 1 回だけ求めてから散らばりを足す、品質管理でよく使う計算の練習です。

本番の試験は PC で受けることが多いので、PC での練習をすすめます。スマホでも、読んで、書いて、採点するところまで動きます。

入力は標準入力から読み、答えは標準出力に書きます。1 テストあたり 2 秒までです。

問題

ある工場で、同じ型の部品を N 個取り出して重さを量りました。i 個目の重さは a_i グラムです。品質の確認のために、重さの平均と標準偏差を求めてください。

平均 m は、N 個の重さの合計を N で割った値です。標準偏差は、それぞれの重さと平均の差 (a_i - m) を 2 乗して全部足し、N で割ってから、その平方根をとった値です。N - 1 ではなく N で割ることに気をつけてください。

入力の形式

N
a_1 a_2 ... a_N

1 行目に部品の数 N、2 行目に N 個の重さが半角の空白 1 つで区切られて並びます。

出力の形式

2 行を出力します。1 行目に平均、2 行目に標準偏差を、どちらも小数第 6 位まで (小数点の後ろに 6 桁) 書きます。正しい値との差が 0.000001 以下 (または、正しい値に対する比で 0.000001 以下) なら正解です。

制約

  • N は 1 以上 200000 以下の整数です
  • 重さ a_i は 1 以上 100000 以下の整数です

入力と出力の例

例 1

4 個の重さが 10、20、30、40 グラムです。平均は 25 です。平均との差は -15、-5、5、15 で、2 乗すると 225、25、25、225、合計は 500 です。N の 4 で割ると 125 で、その平方根は約 11.180340 です。

入力

4
10 20 30 40

出力

25.000000
11.180340

例 2

平均が割り切れないときです。平均は 16 ÷ 3 で 5.333333... になります。

入力

3
5 5 6

出力

5.333333
0.471405

例 3

部品が 1 個だけのときは、平均との差が 0 なので、標準偏差は 0 です。

入力

1
7

出力

7.000000
0.000000

ヒント

まだ開いていません

付箋は 3 枚。下の段ほど答えに近づきます

  1. ヒント 2

  2. ヒント 3答えに近い

main.py
import sys

data = sys.stdin.read().split()
n = int(data[0])
weights = list(map(int, data[1:1 + n]))

# ここから書く

入力

出力

「実行する」を押すと、ここに出力が出ます

できているか「提出して採点」を押すと、隠れたテストを全部走らせて、通ったかをここに出します