ダイスを 30 個同時に振って、すべて 1 の目が出たら負け
ダイスを30個同時に振って、すべて1の目が出たら死ぬ遊び - mtx-hoge - 断片部からですが、個人的には確率というものを信頼していないため、同じことを言われたら断ると思いますが、ここではプログラムの話として検証してみます。
まず、ダイスを 30 個同時に振って全てが 1 になる確率ですが、これを awk で求めます。
$ nawk 'BEGIN{j=1;for(i=1;i<=30;i++){j*=6}print 1/j}'
4.52337e-24
確かに約 4 x 10 のマイナス 24 乗です。 では、30 個のダイスを同時に振って何回目で全てが 1 になるかをプログラムで確かめてみましょう。 以下のようなもので確かめることができます。
#! /usr/bin/gawk -f
# 30_dices.awk
BEGIN {
srand();
num = ARGV[1] ? ARGV[1] : 30;
for (;;) {
for (i = 1; i <= num; i++) {
if (dice() == 1) {
count++;
}
}
turn++;
##printf("%d\r", turn);
if (count == num) {
print "Turn: " turn;
print "Oh! you are unlucky.";
exit;
}
}
}
function dice() {
return int(rand() * 6) + 1;
}
論より証拠で実行してみます。
$ mawk -f 30_dices.awk Turn: 5 Oh! you are unlucky.
上記のようにあっという間に終わってしまう場合もありました。 つまり確率である限り、1 回目でその事象が発生しても文句は言えないわけです。
もっとも、実際にはなかなか終わらないケースがほとんどのようです。




