アルゴ式の次の問題の解説で少し疑問に感じた点があったので少し考えてみました。
https://algo-method.com/tasks/702
100点満点のテストを
直感的には次の考え方でAC可能です。
一人が100点(満点)で残りの全員が0点となるとき,100点をとった一人の偏差値がとりうる偏差値の最大値となる。 N = int(input())
A = [0] * N
A[0] = 100 #一人だけ100点
avA = sum(A)/N #平均
var = sum(map(lambda a:(a-avA)**2 , A))/N #分散
sd = var ** 0.5 #標準偏差
print(10*(100-avA)/sd + 50) #偏差値
これでACですが,解説には以下のような記載がありました。
(偏差値の)最大値は
X さん以外のN−1 人の点数は全て等しい。これをもとに,X さんが 1 点を,残りの人が 0点を取った場合のX さんの偏差値を考えると次のようになります。
と続き,この仮定をもとに計算して,偏差値の最大値として,上述の
ん?なぜXさんは1点なのだ?100点満点じゃないの?
この記載を読んで,このように思った人は僕だけではないはず。
ということで,次の問題を考えることにします。
N人(Xさんと,残りN-1人)の人がテストを受けるとき,Xさんの偏差値が最大となるのは,次の条件を満たすときで,N人それぞれの得点(の値)は偏差値には無関係である。
(条件)Xさん以外のN-1人の点数が全て等しい
(条件)を満たすときにXさんの偏差値が最大となることの証明はアルゴ式に記載があるので,そこは認めることとします。
ここでは,次の条件において具体的にXさんの偏差値を計算します。
**平均について **
また,今後よく出てくるので次の値も計算しておく。
同様に
**分散について **
標準偏差について
Xさんの偏差値について
であるから,
したがって,このときのXさんの偏差値
となる。
なかけん さんに次のような助言をいただいたので追記します。
全体の点数をx倍(正の値)すると、平均と点数との差はx倍、分散はxの2乗倍、標準偏差はx倍になり、偏差値の式の分数の分母分子への影響が打ち消し合います。なので、1点のケースは全体を100倍した時と同じ偏差値になります。
Xさんが
このとき,(Xさんも含めて)全員の得点が
このとき,
が成り立ちます(証明は後述)。したがって,
となり,偏差値
ただし,
これを利用すると,元の得点
したがって次の結論を得る。
偏差値は線形変換に対して不変である