元気が出るマイヤヒー

これを見て元気だそうね。音声。

脱出ゲーム-スワンズルームサーバー移転

スワンズルーム・サーバー移転

超人気の為サーバーの過負荷に長け耐えかねていた脱出ゲーム-スワンズルームはより高スペックのサーバーに移転した模様です。

Reference

  • 当日記での紹介記事 - SWAN'S ROOM-脱出ゲーム-スワンズルーム
  • cssZenGardenShot

    css Zen Garden: The Beauty in CSS Designは有名なCSSデザインサイトです。ひとつのHTMLを元にCSSハカーな人たちが饗宴を繰りひろげています。HTMLは同じでもCSSが異なればここまで違う印象になるのかと驚いてしまいます。はてなユーザならばテーマ(CSS)を替える楽しみを知っているかもしれませんね。css Zen Garden: The Beauty in CSS Designのサムネイル集が出来ているようです。あらためてうっとりですね。

    TYLIGHTさんのReread 2005-03-05 (Sat) より。TYLIGHTさん、サムネイル作っちゃうなんてエライなぁ。

    第一種モンティホール問題のシミュレータ

    JavaScriptヘタレなので時間がかかりました。第一種モンティホール問題のシミュレータを作成しました。以下のURLでデモ。Javascript要です。私がJavaScriptでいちから作ったプログラムは事実上これが初めてです。変だったら教えてくださいませ。m()m

    試行にあたっては都度、客は最初に選んだのとは異なる扉を選びます。勝率期待値は2/3です。1000回試行します。

    ソースは以下に。シミュレータの意図を示す為に限りなく饒舌にしてあります。

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
    <html lang="ja">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
    <meta http-equiv="Content-Script-Type" content="text/javascript">
    <title>Monty Hall Dilemma Simulator</title>
    <link rel="INDEX" href="http://stardust.s2.xrea.com/index.html">
    <link rev="MADE" href="mailto:star_dust@mail.goo.ne.jp">
    
    <script type="text/javascript">
    <!-- ここからスクリプトを見えなくする
    
    /* 初期処理開始 */
    labebegin :
    
    /* 固定値 */
    
    var A = "A";
    var B = "B";
    var C = "C";
    
    /* 変数 */
    
    var rnd1 = 0;
    var rnd2 = 0;
    var rnd3 = 0;
    var rnd4 = 0;
    var rnd5 = 0;
    
    var X = "";
    var Y = "";
    var Z = "";
    var F = "";
    var G = "";
    var H = "";
    var M = "";
    var N = "";
    
    /* uwaki を初期化する */
    var uwaki = 0;
    
    /* 試行回数 maxloop を 1000 とする */
    var maxloop = 1000;
    
    /* loop回数loop を 0 とする。*/
    var loop = 0;
    
    /* 初期処理ここまで */
    
    /* 主処理開始 */
    labelmain :
    
    /* もしも、loopが maxloopならば 主処理終了へ飛ぶ */
    while (loop < maxloop) {
    
        /* A,B,C から2個選ぶ これをはずれ、Y,Zとしておく 
        残りを当りとして X としておく */
    
        rnd1 = Math.floor(Math.random() * 3);
        rnd2 = Math.floor(Math.random() * 2);
        switch (rnd1) {
            case 0:
                X = A;
                if (rnd2 == 0) {
                    Y = B;
                    Z = C;
                }
                else  {
                    Y = C;
                    Z = B;
                }
                break;
            case 1:
                X = B;
                if (rnd2 == 0) {
                    Y = C;
                    Z = A;
                }
                else  {
                    Y = A;
                    Z = C;
                }
                break;
            case 2:
                X = C;
                if (rnd2 == 0) {
                    Y = A;
                    Z = B;
                }
                else  {
                    Y = B;
                    Z = A;
                }
                break;
        }
    
        /* 客はA,B,C から最初の1個を選ぶ 選んだものをFとしておく。
        選ばれなかったものを G,H としておく。*/
    
        rnd3 = Math.floor(Math.random() * 3);
        rnd4 = Math.floor(Math.random() * 2);
        switch (rnd3) {
            case 0:
                F = A;
                if (rnd4 == 0) {
                    G = B;
                    H = C;
                }
                else  {
                    G = C;
                    H = B;
                }
                break;
            case 1:
                F = B;
                if (rnd4 == 0) {
                    G = C;
                    H = A;
                }
                else  {
                    G = A;
                    H = C;
                }
                break;
            case 2:
                F = C;
                if (rnd4 == 0) {
                    G = A;
                    H = B;
                }
                else  {
                    G = B;
                    H = A;
                }
                break;
        }
    
        /* モンティは客が選ばなかったG.H の中から 
        はずれ{Y,Z}に含まれるものをひとつ選ぶ。(かならず存在する)
        これをMとしておく。
        また、{Y,Z}のうち、M でないものを Nとする */
        /* この際、モンティの選択には、傾向がないものとする 【重要】*/
    
        /* 場合分けは以下の通り */
        /* F が当りの場合 
        モンティはG,H から 無作為に M を選ぶ */
        /* F がはずれの場合
        モンティはG,Hの中に当たりがあることを知っている。
        当たりでないほうをMとするが作為は不可能である */
    
        rnd5 = Math.floor(Math.random() * 2);
        if (F == X) {
            if (rnd5 == 0) {
                M = G;
                N = H;
            }
            else  {
                M = H;
                N = G;
            }
        }
        else  {
            if (G == X) {
                M = H;
                N = G;
            }
            else  {
                M = G;
                N = H;
            }
        }
    
        /* 客は、モンティが示した M 以外の中から、
        F ないし N を選択することとなる。
        ここでは客は浮気君で初志貫徹のFではなく、
        Nを選択することとする。*/
        /* Nが当たりXならば カウンタuwakiに1を加算する。*/
    
        if (N == X) {
            uwaki = uwaki + 1;
        }
    
        /* loop に1を加え、主処理開始へ飛ぶ */
        loop = loop + 1;
    
        /* 主処理終了 */
    }
    
    /* 終了処理開始 */
    labelend :
    
    /* uwakiをalert()する。*/
    alert('試行回数=' + loop);
    alert('勝利回数=' + uwaki);
    
    /* 終了処終了 */
    
    // ここまで見えなくなる -->
    
    </script>
    
    </head>
    <body>
    <h1>Monty Hall Dilemma</h1>
    <p>Monty Hall Dilemmaで最初に選んだ扉とは異なる扉を選択した時の勝率を導く為に
    繰り返し試行して結果をalertするJavaScriptによるsimulatorです。</p>
    <p>Montyさんには特別な意図はないものとします。(第一種Monty Hall Dilemma)</p>
    
    <noscript>
    <p>javascript が実行できませんでした。ごめんなさい。JavaScriptでalert出すだけの文書です。</p>
    </noscript>
    
    
    </body>
    </html>
    

    なにゆえロジックを饒舌にしたのかを自分用の覚書で付記しておくこととします。以下の外国製のシミュレータは恐らく完全なものなのでしょうけれども、頭脳の中でプレ処理してしまっていますので、省略が発生しており、慎重なにとっては俄かには納得できないだろうなぁと思ったからです。内容は3択を2回行って一致していたら扉を選びなおさなかったケースで商品をGETしたとするものです。

    第2種MontyHall問題は、上の自作のシミュレータには含まれていないところの、司会者Montyの選択に恣意性ないし意図がある場合にどうなるかです。恣意性の表現とそのシミュレートにはもう少し時間を掛けたいと思っています。Montyに恣意性があったとしても、客の勝率は同じはずであるという結論を私は持っていますが、モンテ・カルロ法で確かめてみたいと願っているのです。

    続きをhttp://d.hatena.ne.jp/hoshikuzu/20050308#D20050308MONTYHALLに書いて見ました。消化不良ですけれども。