123DiceRoller是一個免費的線上骰子模擬器,能在你的瀏覽器裡擲出逼真的3D骰子。它的設計重點是公平、快速和保護隱私:結果來自密碼學安全的亂數產生器,骰子依照真實的物理效果擲出,而且任何關於你或你擲骰的資料,都不會傳送到伺服器。
一次擲骰的完整步驟
- 先抽出數字。每一顆骰子,都由你瀏覽器的Web Crypto API(
crypto.getRandomValues)提供一個32位元的亂數,再用「拒絕取樣」換算成某一面:凡是會讓小點數出現機率稍微偏高的抽取結果,都會直接捨棄,所以N面骰的每一面,機率都剛好是1/N。 - 模擬擲骰過程。剛體物理引擎(cannon-es)會計算重力、摩擦力、反彈和骰子之間的碰撞,把骰子擲到桌面上。整個擲骰過程在顯示之前,不到一秒就計算完成。
- 轉動骰子,對上結果。每種骰子的形狀都是對稱的:一顆d20有60種不同的旋轉方式,轉完看起來都一模一樣。模擬器會從中挑出唯一一種旋轉,讓抽到的數字剛好落在物理模擬中朝上那一面的位置,並從第一個影格就開始套用。動作是真實的,而數字早已公平地決定好了。
- 斜靠的骰子會重擲。如果有骰子停下時會斜靠在另一顆骰子上,系統會在你看不到的地方重新擲一次,就像在真實桌面上遇到這種情況也要重擲一樣。
- 播放擲骰過程,搭配陰影、反光,以及與每次碰撞同步的音效。
為什麼不讓物理引擎決定點數?
因為模擬並不是公平的隨機來源。初始位置、時間步長和捨入誤差這些細節,都可能讓某些面比其他面更常出現,而且沒有人能證明不會這樣。密碼學亂數產生器則是專為不可預測和均勻分布而設計,也經過檢驗。把兩者分開,就能兩全其美:擲骰過程看起來、聽起來都很真實,結果也值得信賴。
精確的機率
每次擲骰顯示的機率都是算出來的,不是猜的。點數和以摺積一次一顆骰子地計算;優勢這類取捨擲骰,則把每一種不同的結果都算過一遍。骰子機率計算器頁面有方法的詳細說明。
使用的技術
這兩個函式庫都直接由本站提供,而不是透過第三方CDN,所以頁面絕不會從其他地方載入程式碼。
123系列的一員
123DiceRoller和123Calculator,以及我們其他免費、免註冊的工具,同屬一個系列。有問題、點子,或想回報錯誤嗎?歡迎寫信到hello@123diceroller.com。
最後更新: