投 稿 類 別 : 數 學 類 篇 名 : 利 用 JavaScript 佐 證 Monty Hall Problem 作 者 : 陳 俊 瑋 台 北 市 立 大 安 高 級 工 業 職 業 學 校 二 年 級 電 機 科 乙 班 指 導 老 師 : 林 志 昌 老 師
壹 前 言 一 研 究 動 機 與 目 的 Monty Hall Problem, 又 稱 三 門 問 題, 是 個 十 分 違 反 直 覺 的 理 論 即 使 經 過 機 率 的 推 導 與 解 說 之 後, 仍 然 有 部 分 的 人 無 法 接 受 這 種 觀 念 於 是 我 們 希 望 利 用 電 腦 的 運 算 能 力, 來 模 擬 大 量 的 Monty Hall Problem, 以 數 據 來 佐 證 貳 正 文 一 Monty Hall Problem 討 論 現 在 有 三 道 門, 其 中 一 道 門 後 面 有 獎 品, 玩 家 如 果 猜 中 了 就 可 以 帶 回 家 當 玩 家 選 擇 了 一 號 門 的 時 候, 主 持 人 把 三 號 門 打 開, 告 訴 玩 家 裡 面 什 麼 都 沒 有, 也 就 是 說, 獎 品 應 該 會 在 一 號 或 二 號 門 後 面 這 個 時 候, 玩 家 該 不 該 捨 棄 一 號 門, 改 選 擇 二 號 門 呢? ( 一 ) 維 持 原 本 最 初 什 麼 都 不 知 道 的 狀 況 下, 從 三 道 門 中 猜 中 有 獎 品 的 那 道 門 的 機 率 是 ( 二 ) 改 變 選 擇 就 玩 家 第 一 次 是 否 猜 中 分 為 兩 部 分 : 第 一 次 就 猜 中, 改 變 選 擇 而 獲 獎 的 機 率 為 0; 第 一 次 沒 猜 中, 則 主 持 人 只 能 打 開 玩 家 選 剩 的 門 中 不 是 獎 品 的 那 一 扇 1
門, 沒 被 玩 家 選 到 也 沒 被 主 持 人 打 開 的 就 是 獎 品 門, 這 個 時 候 只 要 換 門 就 一 定 有 獎 品 換 句 話 說, 如 果 玩 家 一 開 始 選 到 錯 的, 接 下 來 只 要 改 變 選 擇 就 一 定 會 對, 選 到 錯 的 機 率 為 ( 三 ) 重 選 概 念 我 們 可 以 把 Monty Hall Problem 分 成 兩 部 分 來 進 行 : 主 持 人 開 門 前 主 持 人 開 門 後 主 持 人 開 門 前, 玩 家 猜 中 的 機 率 與 維 持 原 本 相 同, 只 有 ⅓ 主 持 人 開 門 後, 我 們 可 以 把 題 目 重 新 想 成 兩 扇 門, 其 中 一 扇 門 後 面 有 獎 品, 因 此 玩 家 重 新 選 擇 後 獲 獎 的 機 率 就 是 這 樣 的 概 念 在 人 的 身 上 不 好 實 現, 因 為 對 人 來 說, 隨 機 選 擇 一 扇 門 的 方 法 正 好 就 是 維 持 原 本 或 改 變 選 擇 不 過 我 們 可 以 在 主 持 人 開 了 門 之 後 跟 主 持 人 借 個 兩 分 鐘, 離 開 活 動 現 場 找 一 位 路 人, 請 他 幫 你 選 二 介 面 設 計 為 了 取 得 龐 大 的 實 作 數 據, 我 們 決 定 以 電 腦 為 輔 助 考 量 到 一 般 電 腦 沒 有 安 裝 C 或 Visual Basic, 我 們 打 算 用 最 基 本 的 HTML 與 JavaScript 來 完 成 這 一 項 任 務 需 要 觀 察 的 對 象 為 : 維 持 原 本 的 猜 中 次 數 (txtfirst) 與 勝 率 (txtfirstps) 以 2
及 是 否 領 先 (txtfirstgr) 改 變 選 擇 的 猜 中 次 數 (txtchange) 與 勝 率 (txtchangeps) 以 及 是 否 領 先 (txtchangegr) 重 選 概 念 的 猜 中 次 數 (txtrechoose) 與 勝 率 (txtrechooseps) 以 及 是 否 領 先 (txtrechoosegr) 另 外 還 有 無 效 分 析 數 (txtunavailable) 與 有 效 分 析 數 (txtavailable), 最 後 是 連 續 分 析 需 求 量 (txtamount) 三 主 程 式 單 筆 分 析 Monty Hall Problem 分 為 四 個 階 段 : 隨 機 放 禮 (getorigin) 第 一 次 選 擇 (first) 主 持 人 開 門 (tip) 討 論 與 分 析 維 持 原 本 (first) 改 變 選 擇 (change) 或 重 選 概 念 (rechoose) ( 一 ) 隨 機 放 禮 (getorigin) 我 們 可 以 用 一 個 陣 列 來 模 擬 所 有 門, 索 引 值 是 門 的 編 號, 子 元 素 是 門 後 面 的 東 西 true 是 有 獎 品,false 是 沒 有 獎 品 先 宣 告 陣 列 後 用 迴 圈 將 每 一 個 子 元 素 設 定 為 false, 在 全 部 索 引 中 取 亂 數, 亂 數 所 指 定 的 子 元 素 將 被 更 改 為 true 並 且,result.target 儲 存 了 被 亂 數 指 定 的 3
索 引 值 ( 也 就 是 獎 品 門 ), 方 便 外 部 程 式 利 用 其 中,n 為 外 部 宣 告 的 全 域 常 數, 代 表 門 的 數 量 減 一 ( 為 了 配 合 索 引 值 所 以 減 一 ), 預 設 為 2 (3 扇 門 ) random 則 為 自 定 義 函 式, 用 來 取 得 某 兩 數 之 間 的 整 數 亂 數, 採 用 了 網 路 上 常 見 的 大 減 小 加 小 公 式, 程 式 碼 如 下 : 在 主 程 式 中, 以 變 數 origin 來 接 住 getorigin 所 傳 回 的 陣 列, 則 origin 可 代 表 這 些 門 及 門 後 的 狀 況 ( 二 ) 第 一 次 選 擇 (first) 數 即 可 第 一 次 選 擇 的 時 候 對 門 後 面 是 什 麼 完 全 不 知, 因 此 直 接 在 全 部 索 引 中 取 亂 ( 三 ) 主 持 人 開 門 (tip) 主 持 人 必 須 開 玩 家 第 一 次 選 擇 的 門 以 外, 且 不 是 獎 品 的 那 一 扇 因 此 主 持 4
人 開 門 就 是 在 全 部 索 引 中 取 亂 數 後, 檢 查 是 否 與 first ( 第 一 次 選 擇 ) 或 origin.target ( 獎 品 門 ) 重 複, 循 環 直 到 上 述 條 件 為 否 while 條 件 式 必 須 放 在 後 面, 因 為 要 先 取 亂 數 才 判 斷 是 否 重 複 ( 四 ) 討 論 維 持 原 本 就 等 同 於 first 改 變 選 擇 (change) 表 示 放 棄 first, 且 不 能 選 到 已 開 的 門 (tip) 與 主 持 人 開 門 相 同 的 概 念, 但 改 變 選 擇 的 條 件 為 是 否 與 first ( 第 一 次 選 擇 ) 或 tip ( 主 持 人 開 門 ) 重 複 重 選 概 念 (rechoose) 則 是 只 要 在 主 持 人 所 開 的 門 以 外 隨 便 選 一 扇 門 即 可 其 條 件 為 是 否 與 tip ( 主 持 人 開 門 ) 重 複 ( 五 ) 分 析 將 first change rechoose 當 作 索 引 分 別 代 入 origin, 若 得 到 true 表 示 猜 中, 若 得 到 false 表 示 沒 猜 中 分 析 後, 有 效 分 析 數 加 一 5
其 中,goOn 為 自 定 義 函 式, 用 來 讓 某 個 對 象 的 value 加 一 parseint 函 式 用 來 將 字 串 轉 為 數 值, 雖 然 JavaScript 為 弱 型 別 語 言, 但 是 不 稍 加 轉 換 的 話 會 造 成 瀏 覽 器 的 誤 會 goon 的 程 式 碼 如 下 : 將 first change rechoose 分 別 除 以 總 分 析 數 就 是 勝 率, 同 時 比 較 三 者 以 判 斷 是 否 領 先, 領 先 者 以 標 記, 方 便 觀 察 者 辨 識 其 中,showResult 與 isgrande 為 自 定 義 函 式 showresult 用 來 計 算 勝 率, isgrande 用 來 判 斷 first change rechoose 是 否 為 三 者 中 最 大 的 數 值 其 程 式 碼 如 下 : 6
以 上 為 單 筆 分 析 的 主 程 式, 將 會 宣 告 成 函 式 並 命 名 以 analyze 四 控 制 程 式 連 續 分 析 為 了 取 得 大 量 數 據, 我 們 要 讓 上 面 所 設 計 的 單 筆 分 析 主 程 式 (analyze) 連 續 工 作, 但 考 慮 到 連 續 作 業 的 JavaScript 可 能 導 致 瀏 覽 器 無 法 回 應, 因 此 我 們 希 望 模 擬 Visual Basic 中 My.Application.DoEvents() 所 擁 有 的 稍 微 停 頓 的 效 果 我 們 先 宣 告 全 域 變 數 amount, 用 來 記 錄 所 需 的 分 析 次 數, 然 後 呼 叫 主 程 式 analyze, 在 analyze 中, 我 們 可 以 加 入 一 個 一 定 時 間 後 呼 叫 自 己 的 程 式 片 段, 並 且 在 每 次 完 成 分 析 的 時 候 讓 amount 減 一, 當 amount 為 0 的 時 候, analyze 必 須 跳 出, 結 束 所 有 的 分 析 作 業 如 此 便 能 實 現 包 含 DoEvents 效 果 的 迴 圈 7
呼 叫 startanalyze 並 代 入 分 析 需 求 量, 就 會 開 始 一 連 串 的 連 續 分 析 五 數 據 蒐 集 有 效 分 析 維 持 原 本 改 變 選 擇 重 選 概 念 第 一 次 第 二 次 第 三 次 第 四 次 第 五 次 5000 37.520% 62.480% 53.700% 10000 36.370% 63.630% 53.120% 10000 37.780% 62.220% 52.860% 50000 37.338% 62.662% 53.758% 500000 37.345% 62.655% 53.485% 帄 均 ( 加 權 ) 37.3365% ⅓ 62.6635% ⅔ 53.4934% ½ 從 上 表 我 們 發 現 : 維 持 原 本 改 變 選 擇 重 選 概 念 三 者 勝 率 都 存 在 著 往 某 個 固 定 方 向 的 偏 差 以 維 持 原 本 來 說,⅓ 所 期 望 得 到 的 結 果 應 該 是 33.333%, 可 是 在 每 次 的 數 據 分 析 中, 維 持 原 本 的 勝 率 都 飆 高 到 37% 左 右 在 信 任 JavaScript 固 有 函 式 的 狀 況 下, 我 們 合 理 懷 疑 這 樣 一 個 偏 差 現 象 肇 因 於 掌 管 亂 數 生 產 的 自 定 義 函 式 random 六 修 正 ( 一 ) 大 減 小 加 小 的 亂 數 原 理 與 弊 病 當 我 們 詢 問 各 種 程 式 語 言 的 亂 數 取 得 方 式 時, 通 常 會 得 到 一 個 公 式 : 8
其 中,rnd() 是 各 種 語 言 中 取 得 亂 數 種 子 的 方 法 在 各 種 語 言 中, 亂 數 種 子 的 值 都 是 在 小 於 1 且 大 於 等 於 0 之 間 的 小 數 為 了 方 便 討 論, 我 們 把 上 式 改 寫 後 並 整 理 如 下 : 將 R 視 為 一 個 集 合, 令 R 的 元 素 有 N 個, 當 r = x 的 時 候, 可 能 的 R 的 個 數 為 n, 則 結 果 x 在 此 亂 數 機 制 中 出 現 的 機 率 為 n N 於 是 我 們 發 現, 當 x 在 min 或 max 的 時 候,x 出 現 的 機 率 為 0.5 (max - min), 是 其 他 x 的 出 現 機 率 1 (max - min) 的 一 半 這 是 因 為 四 捨 五 入 採 用 了 0.5 為 基 準, 而 整 數 則 是 以 0.0 為 基 準, 因 此 在 min 與 max 兩 端 的 數 值 出 現 的 機 率 會 被 切 掉 一 半 為 了 修 正 這 一 現 象, 我 們 必 須 用 以 0.0 為 基 準 的 函 數 正 好 是 無 條 件 捨 去 或 無 條 件 進 入 採 用 無 條 件 捨 去 之 後,x = max 的 出 現 機 率 將 變 為 0, 為 了 讓 x = max 的 出 現 機 率 與 其 他 數 值 相 等 ( 指 min 到 max 1 的 數 值 ), 因 此 在 使 用 該 亂 數 函 式 前 先 將 max 加 一 即 可 由 上 面 的 數 學 式 推 回 程 式 語 言 如 下 : 實 作 測 試 如 右 圖, 修 正 後 的 分 析 結 果 十 分 接 近 理 論 值 參 結 論 9
一 藉 由 實 驗 數 據 我 們 可 以 更 確 定 Monty Hall Problem 的 想 法 二 在 一 個 活 動 中, 對 於 一 事 件 發 生 的 機 率, 在 討 論 者 對 全 局 有 新 的 認 知 時, 不 論 該 認 知 發 生 的 時 間 在 該 活 動 之 前 或 之 後, 都 可 能 讓 討 論 者 修 改 該 事 件 發 生 的 機 率 三 在 使 用 各 種 電 腦 語 言 取 得 亂 數 的 時 候, 不 能 用 四 捨 五 入 而 要 用 無 條 件 捨 去 法 肆 引 註 資 料 一 胡 為 君 ( 譯 ) (2005) Lazaro Issi Cohen Joseph Issi Cohen 著 HTML CSS JavaScript 三 合 一 網 頁 設 計 萬 用 辭 典 台 北 市 : 上 奇 科 技 二 施 威 銘 研 究 室 (2011) HTML+JavaScript 網 頁 程 式 設 計 台 北 市 : 旗 標 三 呂 振 森 ( 譯 ) (2011) Ronald E. Walpole Raymond H. Myers Sharon L. Myers Keying Ye 著 機 率 與 統 計 : 機 率 篇 東 華 四 貝 氏 定 理 ( 上 ) - Monty Hall 的 三 扇 門 - MMDays 2012 年 2 月 27 日, http://mmdays.com/2008/04/29/bayes1/ 五 備 註 : ( 一 ) 本 文 章 內 所 有 程 式 碼 與 圖 片 皆 為 本 研 究 自 行 撰 寫 擷 取 所 得 ( 二 ) 程 式 碼 截 圖 中 若 在 左 側 標 以 紅 色 直 線 表 示 該 些 程 式 碼 原 為 同 一 行, 基 於 版 面 因 素 壓 縮 成 兩 行 或 兩 行 以 上 ( 三 ) 由 於 本 研 究 的 分 析 程 式 沒 有 發 布 的 必 要, 因 此 也 不 考 慮 瀏 覽 器 相 容 性 問 題 以 上 程 式 碼 全 部 以 Google Chrome (version 17.0.963.56) 能 運 行 為 原 則 10