January 30, 2007
誕生日の話 :
Neta Talk 3
一応そこまでネタっぽくないのと、半分プログラムな話なのですが、Neta Talkで。
って言うか正直「Others」カテゴリに何を入れるのか自分で分からないです。
T-Akfです。
クラスの中で「誕生日が同じだね!」って言って仲良しになったりラブラブになったりするらしいですが。
T-Akfも小学校の頃一人、中学校の頃一人、大学で一人、合計三人の同じ誕生日の人を見かけております。
さて、これ、奇跡のようですが、案外珍しいモノでもないんですよね。
「366日のうちの一日だよ!? そうそういないよ!?」って思うかもしれませんが、
小学校で自分のクラスの34人、三回クラス分けしたり転校したりしたので150人くらいとは知り合ってるでしょう。
そんな感じで、色々と蓄積していくと、「友達じゃないにしても、誕生日を何らかのキッカケで耳にすることがありうる人」ってのは20年以上生きてれば結構会うんですよね。
さて、さらにクラス単位で考えましょうか。
今回は学校縛りです。
クラスのメンバーが25人しかいないとしても、
その人たち全員が違う誕生日になる確率って言うのはなんと50%以下なんですよ。
計算「式」ってなると難しいですが、単純に考えて見ましょうか。
一年は366日です。
そっからみんな、一個ずつ選んでいくワケです。それがつまり「誕生日」ね。
んで、みんな適当に取って、それが全部違うモノになる確率ってどのくらいだと思いますか? と言う話。
一つを選ぶってコトは「366パターン」考えられるワケ。当たり前。
二人が別々になるパターンってのは、一人目が「366パターン」なのに対し、
二人目は「一人目が引いたものと違うモノじゃないといけない」ので、考えられるパターンは365パターンに減ります。
つまり (366 * 365) / (366 * 366) ですね。
そんな感じで計算していくんですが、実際に計算するのが非常に面倒なので、Rubyで組んで見ました。
……なんでRuby?
---------------------------------------------
begin
# Ruby を用いて クラスの人数から
# 「そのクラスの中で誕生日が同じ人が一切いない確率」を算出するプログラム。
class_member = 25 # クラスの人数
rate = 1.0 # rate を double 型で計算するため、小数で設定。
# 計算処理
for num in 0...class_member
rate *= 366 - num
rate /= 366
end
# こっから端数処理 (有効数字は小数点第二位までとする)
# rate の 小数点第五位までを整数として取り出す
# ※0.23912415 の場合 23912 になる。
rate = Integer(rate * 100000)
# 一の位の値が 5 以上ならば rate に 10 追加。
# いわゆる四捨五入を実行する。
rate += 10 if (rate % 10) > 4
# rate を 10 で割る
rate /= 10
# パーセンテージ変換
# rate を 0.01 倍する。 (再びDouble型に)
rate *= 0.01
# 表示命令
text = "クラスの人数が " + class_member.to_s + "人 の場合、" +
"クラス全員の誕生日が違う確率は " + rate.to_s + "%"
print text
end
------------------------------------------------
こんな感じですね。
25人の場合、全員が違う誕生日になる確率は43.23%になるんですねー。
なんと既に半分以上の確率で、「どっか一組は同じ誕生日になる」ワケです。
T-Akfが小学生の頃は1クラス34人でして。
その場合はなんと 20.56% という非常に低い確率になるんですよ。
全員誕生日がバラバラなクラスの方が実は少ない、って言うのはなんか確率マジックって感じしません?
しませんかそうですか。
投稿者 beeplex : January 31, 2007 08:32 PM
投稿者 T-Akf : January 31, 2007 09:12 PM
Written by T-Akf
| comment (2)
or Trackbacks(0)
そんな貴方に、無双シリーズですよ!