產生任意範圍的亂數
需要 1 到 100 之間的數字、6 個樂透號碼,還是測試用的 1,000 個隨機數值?這個亂數產生器可以從您指定的任意範圍中抽出數字,並提供不重複、排序及小數位數等選項。它使用瀏覽器的密碼學安全隨機性(cryptographically secure randomness),確保結果無法預測且分佈均勻,而且所有資料都不會傳送到伺服器。
功能特色
- 任意範圍:包含負數與極大的數值。
- 單一或多個:一鍵最多可產生 10,000 個數字。
- 不重複:就像從袋子裡抽球一樣的模式,即使範圍極大也能高效運作。
- 小數:最多可支援至小數點後六位。
- 排序:將結果依遞增排序,並複製為清單。
- 無偏差:採用拒絕取樣(rejection sampling)確保範圍內的每個數值出現機率均等。
常見用途
遊戲與決策。 擲虛擬骰子(1–6)、決定誰先開始、隨機挑選頁面或問題,或是公平地做出決定。
抽獎與贈獎活動。 為每個參加者分配一個號碼,然後抽出不重複的得獎者。由於隨機性來自安全來源,沒有人能預測或影響結果。
樂透。 產生一組不重複的樂透號碼。隨機選號能避開生日等常見的選號模式,降低與他人平分獎金的機率。
教育與研究。 從編號清單中隨機抽樣、將參與者分組,或是建立練習題。
軟體測試。 在特定範圍內產生測試輸入值、ID 或樣本資料集。
如何產生「公平」的亂數
單純的做法是取一個極大的隨機值,除以範圍大小後取餘數。但如果範圍無法整除亂數來源,這種做法會讓某些數字出現的機率稍微偏高。本工具改採「拒絕採樣」(rejection sampling)的方式,直接捨棄會造成偏差的數值並重新抽取。因此,在 1 到 3 的範圍內,每個數字被抽中的機率都會是精準的三分之一。
若要抽出不重複的數字,本工具會執行局部的 Fisher–Yates 洗牌演算法:概念上是將整個範圍洗牌後取出最前面的幾個數字,但實際上並不會建立完整的清單。因此,即使從 1 到 1,000,000,000 之間抽出 10 個數字,也能瞬間完成。