弄丟了桌遊的骰子,或者在角色扮演 (role-playing) 遊戲進行中需要一個 d20 嗎?這個免費的線上擲骰子工具可以替代您手邊缺少的任何骰子。在「骰子」欄位中,設定您想投擲多少個骰子 — 1 到 20 之間的任何數字 — 在「面數」欄位中指定每個骰子有多少個面,然後點擊「產生」。該頁面在打開時會顯示兩個普通的六面骰子,因此第一次投擲只需點擊一下即可。每個骰子都會單獨顯示,並且整個投擲的總和會直接顯示在它們下方,這樣即使是 3d6 也不再需要心算。
每次投擲都是由您的瀏覽器透過 Web Crypto API (crypto.getRandomValues) 執行的,它直接從您自己系統的隨機源中提取密碼學上強大的隨機值,而不是使用像 Math.random() 這樣的偽隨機 JavaScript 函數。將 32 位元原始值轉換為面數,正是虛擬骰子經常悄悄犯錯的地方:將該值除以面數並取餘數 (modulo) 是最顯而易見的方法,但它也帶有偏差,因為如果 2^32 不能被面數整除,較低的面出現的頻率會略高於其他面。這種缺陷被稱為 modulo bias,它是可以測量的,而不僅僅是理論上的。相反,這個工具會丟棄任何超出面數的最大精確倍數的值並重新抽取 — 這種技術被稱為 rejection sampling。它需要一些額外的抽取,但它保證了準確性而不是近似值。沒有任何資料被發送到伺服器,沒有任何紀錄被儲存,而且一旦頁面載入完畢,即使您的網際網路連線斷開,您的投擲也將繼續運作。
這兩個欄位完成了所有的工作,它們直接對應於遊戲中已經使用的骰子符號。「骰子」意味著您一次投擲的數量,從 1 到 20。「面數」意味著每個骰子擁有多少個面,從 2 到 1000 — 這足以滿足 d2 擲硬幣、完整的角色扮演套組 (d4, d6, d8, d10, d12 和 d20)、百分比 d100,以及遊戲可能發明的超出這些範圍的任何其他東西。任何以 NdM 格式編寫的內容實際上也就是這兩個欄位:2d6 意味著將「骰子」設定為 2,將「面數」設定為 6,而單獨的 d20 意味著「骰子」為 1,「面數」為 20。要為一個角色屬性投擲 3d6 嗎?將「骰子」設定為 3,「面數」設定為 6,點擊「產生」,所有三個面將與它們的總和一起出現。兩個開關改變了結果的外觀,而不是其內容。「3D 動畫骰子」預設是開啟的,它會為每個骰子繪製一個在空中旋轉的立方體直到它停下來 — 關閉它,數字將作為簡單的列表立即出現。「隨機顏色」賦予每個骰子自己獨特的顏色,而不是標準的紅色,並且這僅在開啟「3D 動畫骰子」時有效,因為簡單列表沒有骰子可供上色。只有六面骰子會繪製點數;對於任何其他類型,投出的數字直接顯示在其表面上,因為十七面骰子沒有標準的點數佈局。
結果下方的一行使您免於計算:Σ 是投擲中包含的每個骰子的總和,後面跟著投擲花費的時間以及它是在本機 產生的提示。「全部複製」按鈕將結果發送到您的剪貼簿,「儲存為檔案」將其寫入文字檔案 — 兩者都提供每個單獨的面,每行一個,而不僅僅是總和,這樣投出內容的紀錄仍然是投出內容的紀錄。「紀錄」將您最近的 10 次投擲直接保留在瀏覽器中:點擊其中一個即可將其連同總和帶回螢幕,複製或刪除單個項目,或在需要時清除整個列表。「清除」按鈕會清空結果視窗,但會保持您的設定不變。
虛擬骰子比實體骰子更好嗎?就公平而言 — 是的,原因是物理上的。一個普通的模製骰子是被鑽孔並塗漆的,每個鑽出的孔都會帶走少量的材料,所以數字六那一面 — 有了它的六個孔 — 變成了稍微最輕的一面,而它相對的面變成了稍微最重的一面。賭場的 precision dice (精密骰子) 正是因為這個原因而存在的:它們的點是用密度相等的材料在平坦的表面上填充的,它們的邊緣被切割成直角而不是圓角,它們的加工精度達到幾分之一毫米,即便如此,在幾個小時的遊戲後它們還是會被淘汰出局。桌遊盒子裡的骰子沒有任何這些特性,並且會隨著時間的推移而磨損 — 碎裂的角,由於多年手部摩擦而變圓的邊緣,在毯子上而不是桌子上投擲的骰子,這些在現實中遠非隨機。虛擬骰子沒有可能出錯的幾何形狀,它不會磨損,也不提供爭論投擲技巧的空間,並且它在第一萬次投擲時的表現與第一次完全相同。它做不到的 — 舒舒服服地待在您的手掌中。一個誠實的結論是,這個產生器在公平性上獲勝,但在儀式感上落敗。
一個公平的骰子和一個公平的總和並不相同。單個骰子的每一面都有相等的機率落下,但是當您開始將骰子相加時,那些總和就失去了這種平等性,這總是讓人感到驚訝。兩個六面骰子落下會形成 36 種可能性相等的組合;其中正好有 6 種組合加起來是 7,而只有一種方法可以得到 2,也只有正好一種方法可以得到 12 — 所以 7 出現的頻率是 12 的六倍,即使對於完全公平的骰子也是如此。添加第三個骰子會進一步縮小這種模式,迫使 3d6 的結果聚集在中間,這就是為什麼遊戲設計師 在需要數值保持平均而不是走向極端時使用這種方法的原因。單個六面骰子的平均值正好是 3.5,這使得 2d6 的平均值為 7,3d6 的平均值為 10.5,而在遊戲桌上,這種數學計算通常比任何機率都更有用。這些都不是缺陷或偏差:投擲多個骰子相加本來就是這樣運作的,這就是為什麼遊戲會要求使用 2d6 而不是單個 d12,即使兩者涵蓋的範圍非常相似。
骰子沒有記憶。連續四次投出六,絲毫不會降低第五次投出六的可能性;一個整個晚上都沒有出現過一次 1 的骰子並沒有因此就賺到一個 1,也不存在某個特定面「輪到」出現這種說法 — 每次投擲都完全獨立於前一次投擲,骰子不知道它一分鐘前做了什麼。宣稱與之相反的直覺被稱為 gambler's fallacy (賭徒謬誤),正是這種直覺解釋了為什麼我們在自己編造骰子結果時表現得如此糟糕:當被要求寫下一系列可信的投擲序列時,我們會避免重複,我們在高數字和低數字之間交替,我們比真正的隨機性 將它們分布得更均勻。另一方面,真正的隨機性會產生簇、長串相同的數字,以及沒有重複的長時間間隔。那串看起來可疑地整齊的序列,實際上是人類的指紋。
為什麼選擇這個擲骰子工具?
- 僅限瀏覽器的投擲:骰子在您的裝置上投出,不會被發送到任何地方
- Web Crypto API 隨機性:密碼學安全,沒有使用 Math.random()
- 消除 modulo bias:rejection sampling 技術使每一面的機率保持完美的均等
- 遊戲所要求的任何骰子:一次 1 到 20 個骰子,從 d2 直到 d1000
- 為您計算的總和:Σ 累加整個投擲,因此 3d6 不再需要心算
- 3D 動畫骰子,或者關閉動畫以立即獲得一個簡單的數字列表
- 每個骰子都有單獨的顏色,因此一眼就能輕鬆區分許多骰子
- 「紀錄」和「儲存為檔案」:保留您以後可能需要解釋的投擲紀錄
- 無限制且免費:無需註冊,沒有使用限制,我們的伺服器上沒有任何資料
骰子出現在遊戲需要一個無人能選擇的數字的任何地方。桌上角色扮演玩家用 d20 進行攻擊,為角色屬性投擲 3d6,為百分比檢定投擲 d100,即使丟了一半骰子袋的隊伍也可以毫無阻礙地繼續他們的遊戲。飛行棋和其他攤在廚房桌子上的桌遊,在骰子遺失後以同樣的方式繼續 — 只需將「面數」設定為 6,將「骰子」設定為 2,然後繼續玩。遠端遊戲的隊伍在一個共享螢幕上投擲骰子,以便每個人都能在骰子停下時看到落下了哪些面。小學老師們開展經典的機率課堂教學:投擲 2d6 正好 60 次,計算總和,然後看著模式在黑板上自行繪製出來。遊戲設計師在遊戲付印之前,測試某個機制給出的結果是否真的像感覺的那樣大起大落。大量簡單的投擲只是用來決定誰先玩、誰買咖啡或兩個計畫中哪一個獲勝 — 這些都是交給命運做出的決定,人們幾千年來一直透過骰子來解決。
這個工具有一些應該知曉的明確限制。每次投擲只使用一種類型的骰子:「面數」欄位中的值適用於該次投擲中的每一個骰子,因此將 d20 和 d6 一起投擲需要兩次單獨的投擲,而不是一次。這裡沒有修正值,沒有優勢 (advantage) 或劣勢 (disadvantage) 投擲,沒有爆炸骰子 (exploding dice),也沒有輸入骰子符號的文字方塊 — 您得到的是落下的面和總和,在此之後添加的任何規則由您自己處理。Σ 計算投擲中包含的每個骰子,並且「全部複製」和「儲存為檔案」按鈕寫下每個單獨的面而不是總和。無論面數多少,動畫始終顯示一個六面立方體,因為它純粹是為了裝飾:它停止的地方是工具在此之前早已產生的投擲結果。投擲是在您的裝置上本機 發生的,因此在遠端遊戲時,由一個人投擲並共享他們自己的螢幕 — 該工具產生的是您可以自己解釋的投擲,而不是第三方可以為您背書的投擲。而且,當然,一個密碼學上公平的骰子僅僅是一個公平的骰子:它與任何彩券或賭場抽獎沒有任何聯繫,也不給予任何人任何優勢。在這些限制範圍內,保證是堅如磐石的 — 任何骰子的任何一面在任何一次投擲中落下的機率都是完全相等的。