あなたの天然記念物
ホーム更新雑談鉄ゲタランドナーコースガイド自転車JKFFハードソフトダウンロードLinuxリンク(Amiga)リンク(その他)連絡先経歴
    目次 ↓下へ ↑上へ
  1. メールソフトYAMでJISを使う方…
  2. 簡単なMakefile作成方法
  3. WWWサーバー Apacheを使ってみる
  4. ネットワークプログラミング
  5. Scala MM400を使いました
  6. メールソフトYAMで漢字を使う方法
  7. AWebIIで漢字を表示する方法
  8. インターネットでNiftyServeへログイ…
  9. チャットしませんか?
  10. インターネットでチャット(IRC)…
  11. あなたのブラウザに挑戦
  12. JKFFについて知っている二、三の…
  13. CD-ROMを焼き焼き
  14. Professional File System 2を使用開…
  15. 日本語エディタJKED
  16. P-MODELから曲を買ってCD-ROMに
  17. OS3.5インストール方法
  18. TAINACO-Eスクリーンブランカ
  19. Linuxとパラレル接続
  20. 動画ファイルを再生
  21. Real time graphics display trigger …
  22. JKFF最新リリース
  23. AmigaDOS3.9(アイコン編)
  24. AmigaDOS3.9(ファイルリクエスタ…
  25. AmigaDOS3.9(パーティション編)
  26. AmigaDOS3.9(AmiDock編)
  27. AmigaDOS3.9(Unarc編)
  28. AmigaDOS3.9(アイコン修正編)
  29. JKFFDisp最新リリース
  30. YAM用日本語マクロ
  31. 最強のAmigaエミュレータAmithlon
  32. MSでぇ得ぬ
  33. HDToolBoxの使い方
  34. 超高速起動のAmithlon
  35. HTMLのテンプレート処理(解説)
  36. ARexxでWorkbenchを制御(Ram D…
  37. ARexxでWorkbenchを制御(メニュ…
  38. あなたのブラウザに挑戦2
  39. BIOS変更で便利に楽しく
  40. Amithlon Contrib3bリリース
  41. Amithlonでキーボードマップを変更
  42. Amithlonでディジタルサウンド
  43. Perlに夢中
  44. ホームページ製作に夢中
  45. ホームページ作成スクリプト完成
  46. スクリプトのモジュール追加
  47. 文字コードチェックのモジュール追加
  48. 画像サイズ追加のモジュール追加
  49. 確率計算スクリプト
  50. タグIMG自動生成スクリプト
  51. ヘッダ生成モジュール改良
  52. 変換モジュール作成
  53. メニューを簡単に変更してみました
  54. Amithlonでアナログ録音
  55. 行変換のモジュール追加
  56. ページ末尾用のモジュール改善
  57. AmigaOSのシャットダウン用スクリ…
  58. ダウンロード用のモジュール追加
  59. ドローソフトの作成
  60. hpwakeのフロントエンド
  61. AmithlonでMIDI演奏
  62. 改行用のモジュール追加
  63. EはエンハンスドのEです
  64. Amithlonを使う方法-01
  65. Amithlonを使う方法-02
  66. Amithlonを使う方法-03
  67. Amithlonを使う方法-04
  68. フォント名の秘密
  69. 画像収集スクリプト
  70. やったね!AmigaOS4.0漢字表示サポ…
  71. 一言メモ-1
  72. DVD-Rを焼き焼き
  73. 海外送金も楽じゃない
  74. シューティングゲーム(の土台)作りま…
  75. Amithlonと行くLinux Kernelの旅
  76. メールソフトYAMで漢字を使う方法
  77. CDプレーヤ MCDPlayer
  78. 痛車が北海道に来るとAmigaで音声合…
  79. はちゅねをAmigaに連れてって
  80. パレット再配置スクリプト
  81. アクセス規制チェックスクリプト
  82. ニコニコ動画のサムネ表示モジュール…
  83. favicon表示対応
確率計算スクリプト (2004.02.28)

カプセルフィギアという300円の小さいフィギアを購入することにしました。
テーマはクレヨンしんちゃんの映画シリーズから4種類出ています。
困った点があって、「ガチャガチャ」の機械から出てくるために、どれが出るかわからず、4種類をすんなり購入できないのです。
4個購入した際に、見事4種類を獲得できる確率は、そんなに高くなさそうです。
だって4個目は1種類しかありませんから、そこだけでも確率25%ですし、2個目、3個目を考えるともっと低い訳です。
では、ちょいと計算してみましょう。アルファベットabcdは4種類のそれぞれを表しています。

1個目はabcdのどれでもOKですから、4/4で確率100%です。ここで1個目をaとします。
2個目はaではNG、bcdでOKですから、3/4で確率75%です。2個目をbとします。
3個目はabではNG、cdでOKですから、2/4で確率50%です。3個目をcとします。
4個目はabcではNG、dでOKですから、1/4で確率25%です。4個目をdとします。

1〜4個目が同時に成り立つ確率は、全部掛け合わせたものになるので100%×75%×50%×25%=えーと頭悪いからわかりません。(!)
分数のまま計算しちゃいます。そう、「割り算は諸悪の根源(*1)」だから。
分母は4が4個ですから4×4=16、16×16=256(体が覚えてマス)、分子は4×3×2×1=24です。
24/256で約分するには4、いや8で分子分母を割ると3/32になって、ここから電卓で細かい数値を求めると9.375%となります。

ご注意:ガチャガチャから連続して4個買うと機械の中の在庫が減るので別の計算方法になり、少し上昇します。
    でも、私は休日に1個ずつ買うために在庫の補充が行なわれて、1個目と同じ在庫になっていると仮定しています。

結局、4個買って4種類がそろう確率は、1割切る(9.375%)訳ですから、期待できませんねぇ。残念。
1個なら重複(ちょうふく)しないので買ってみると、「わくわく温泉大決戦」で指宿(いぶすき)さんが色っぽいなー。
しんちゃんが指宿さんのふくらはぎに抱きついてるし。なんてうらやま…もとい、セクハラなことを。(笑)

さて、1種類を手に入れると残りの3種類も欲しくなります。そうか、これが陰謀だったんだ。(欲しくなる作戦)
4種類をそろえるには何個買うとよいでしょうか?と言っても、毎度同じ種類になる可能性があるので、確実な個数は出ません。
そこで、「4種類がそろう確率が50%以上になるには何個買うとよいか」に切り替えます。
しかしながら、出来の悪いこの頭では考えるのが面倒です。コンピュータにシミュレーションさせてみました。
1,000,000回試して4種類そろうのが何回あったか数えて、その比率を確率としてみました。
4個目以降の確率は9.368%, 23.480%, 38.117%, 51.257%という結果から、7個目で4種類がそろうかもしれません。(半々の確率で)
3個も余計に買わなきゃならないのと、売る側のテの上に乗るのがイヤなので、1個だけにしておきます。
コンピュータってのは、こうやって使うものだと思うのですけれど、皆さんはどうやってコンピュータを使っていますか?

*1:私のCGの師匠が頻繁におっしゃっていたキーワード。ただし私が割り算が苦手なので無利矢理引用しました。
  ちなみにgoogleで「割り算」「諸悪の根源」を検索すると師匠のPDFがトップで出てビックリです。

付録:シミュレーションしたスクリプト
(ここから)
#!/usr/bin/perl -w

$| = 1;

my $try = 1000000;

print "try = $try.\n";

my $ratio = 0.0;
my $j;
for ($j = 4; $ratio < 50.0; $j++)
{
    print "set   ";

    my $count = 0;
    my $i;
    for ($i = 0; $i < $try; $i++)
    {
        my $result = ("a", "b", "c", "d")[int(rand(4))];
        my $k;
        for ($k = 1; $k < $j; $k++)
        {
            $result .= ("a", "b", "c", "d")[int(rand(4))];
        }

        if ($result =~ /a/ && $result =~ /b/ && $result =~ /c/ && $result =~ /d/)
        {
            $count++;
        }

        if ((0 == $i % ($try / 10)))
        {
            print ".";
        }

    }
    print "done.\n";

    $ratio = $count / $try * 100;
    printf("results number = %d, ratio = %7.3f%%\n", $j, $ratio);
}

(ここまで)
どのページも無断でリンクして構いません。
Valid HTML 4.01 Transitional