カテゴリー別アーカイブ: よく分からないもの

Hello Under World

ルパン

ルパン三世 PERT5
アミ:Hello Under World
   Beautiful Soup、HTMLを解析

今回のヒロインは「アミ・エナン」ハッカーということで、SE・PGとしては結構わかるネタが多くて普通の人より倍楽しめます。
前作のレベッカ・ロッセリーニといいルパンのヒロインはとても魅力的ですね。

アミの言う「Hello Under World」は「OK Google」のように端末起動のフレーズとして使われています。
今後「OK Google」以外でも任意のフレーズを設定できるようになるとのこと。

筆者はHTML解析するとき「Ctrl + U」でソースを全表示させて「Ctrl + F」で検索かけるかChoromeの「F12」で開発者ツールを起動します。
javascriptをいじったときは「Ctrl + F5」でブラウザキャッシュもよく消しますね。
Chrome派なのでFirefox、FireBug派の人ごめんなさい。
IEの「F12」開発者ツールも割と使えますよ?

アミのHello Under WorldをJavaで書くとこんな感じ

public class Ami {
    public static void main(String[] args){
        System.out.println("Hello Under world.");
    }
}

ルパン:俺がお前を守るのは
    そういう俺が好きだからさ
ルパンがアミを守るシーンで「エレン・・・」ってコメントした方はかなりの通。

ワルサーP38でヒロインを務めたエレンは某書籍のヒロインランキングで
1位クラリス・ド・カリオストロに次ぐ第2位だった。
筆者のランキングはよしんばクラリスが1位だったとしても世界1位です。

筆者は炎の記憶やトワイライトあたりの作品がすき。

次元:今度は戦争の玄人かよ!
   逃がしやしねぇぜ…坊や…

前作から次元は「坊や」がお気に入りの様子。
次元:そこまでだ坊やたち、戦争ごっこはもう終わりだ。
イギリスのMI6相手に言ったセリフなのですが、やはり「坊や」が使われています。
小林さん長生きしてください。

モンティ・ホール問題をプログラムで結果だけ出す

ここではモンティ・ホール問題をプログラムによって結果だけ出してしまおうと思う。

モンティ・ホール問題

モンティ・ホール問題 – Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%A3%E3%83%BB%E3%83%9B%E3%83%BC%E3%83%AB%E5%95%8F%E9%A1%8C

PHPが動かない方のためのデモ
http://office-goto.info/demo/monty-hall-problem/index.php
※F5アタックでボクのサーバーを落とさないでくれよ!

ソース

<?php

    $totalWin = 0;
    $totalLoose = 0;
    $doorFlg = 0;
    for ($i = 0; $i < 100; $i++) {
        $jackpot = rand(0,2);
        $select = rand(0,2);
        $openLoose = getOpenLoose($select, $jackpot);

        // 選び直さない
        if ($doorFlg == 0) {
            if ($select == $jackpot) {
                $totalWin++;
            }
            else {
                $totalLoose++;
            }
            if ($i == 99) {
                $doorFlg = 1;
                $i = 0;
                echo "ドアを選びなおさなかった場合<br>";
                echo "Win:{$totalWin}<br>";
                echo "Loose:{$totalLoose}<br><br>";
                $totalWin = 0;
                $totalLoose = 0;
            }
        }

        // 選び直す
        if ($doorFlg == 1) {
            $array = array(0,1,2);
            unset($array[$select]);
            unset($array[$openLoose]);
            $array = array_values($array);
            if ($array[0] == $jackpot) {
                $totalWin++;
            }
            else {
                $totalLoose++;
            }
            if ($i == 99) {
                echo "ドアを選びなおした場合<br>";
                echo "Win:{$totalWin}<br>";
                echo "Loose:{$totalLoose}<br>";
                exit;
            }
        }

    } // endfor

    function getOpenLoose($select, $jackpot) {
        $arrLoose = array(0,1,2);
        unset($arrLoose[$jackpot]);
        unset($arrLoose[$select]);
        $arrLoose = array_values($arrLoose);

        if ($select == $jackpot) {
           $rand = rand(0,1);
           return $arrLoose[$rand];
        }
        else {
           return $arrLoose[0];
        }
    }

プログラム解説と結論

100回ドアを選びなおさなかった場合とドアを選びなおした場合の当りとハズレの回数を出しています。
ドアを選びなおしたほうが当りの確立はあがりました。

実際に100回やるところだったよ、プログラムって便利!

実際、問題だったから筆者は分かったけどいきなりLet’s make a dealのゲストとして呼ばれたならドアを選びなおさなかったかもね!
つまり問題として出されたことに引っかかったわけだ。

納得できない人はドア3枚と新車を購入してヤギを2匹育てて100回試してみるといいよ!