Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2007-09-03

3割打者の10年の成績をシミュレート

打率3割の打者がいたとします。 この打者は打席に立つと3割の確率でヒットを打つものとして、10年間の成績(安打数)を次のようにシミュレートします。 1シーズンの打席数は400とします。

def hit?(average)
  rand < average
end

average = 0.300
bats = 400
10.times do
  hits = 0
  bats.times { hits += 1 if hit?(average) }
  puts "#{hits}/#{bats} .#{1000 * hits / bats}"
end

このプログラムを走らせるとこんな結果が出ます。 randメソッドを使っているので結果は毎回異なります。

114/400 .285
121/400 .302
121/400 .302
112/400 .280
118/400 .295
134/400 .335
106/400 .265
115/400 .287
120/400 .300
138/400 .345

成績を詳しく見てみると、プロ5年まではおよそ3割付近の打率を安定して残しています。 プロ6年目には打率.335という好成績を記録しました。 しかし翌年は打率.265という不振に陥ります。 そしてプロ10年目にして過去最高の138安打(打率.345)というすばらしい成績を達成しました。

10年間同じまったく能力でも、これではきっと○年は好調△年はスランプなんていわれてしまいますね。

さて、話を現実に戻して実在のプロ野球選手が同じ能力でシーズンを向かえた場合、 偶然によってこんなにも成績が違ってしまうものなんでしょうか? あくまで実力にはいろんな要素が複雑に絡み合うということは別として、どうなんでしょう。 それともこのシミュレートには何か致命的な誤りがあるのかな。