書籤    
鞋碼換算    
根號化簡    
梯形面積    
圓的計算    
扇形面積    
橢圓面積    
圓柱體積    
球的體積    
圓錐體積    
圓管體積    
年齡計算    
天數計算    
複利計算    
單利計算    
利息計算    
現值計算    
ROI 計算機    
IRR 計算機    
GDP 計算機    
ROAS 計算    
BMI 計算機    
BMR 計算機    
1RM 計算機    
進位轉換    
薪資換算    
油錢計算    
油耗計算    
坡度計算    
   新增
機率與隨機計算工具
獨立事件機率
獨立事件機率
兩事件機率反推
兩事件機率反推
重複試驗機率
重複試驗機率
條件機率與貝氏定理
條件機率與貝氏定理
期望值計算機
期望值計算機
二項分布計算機
二項分布計算機
排列組合計算
排列組合計算
環狀排列計算
環狀排列計算
重複組合計算
重複組合計算
亂數產生器
亂數產生器
平均與統計計算工具
平均數計算機
平均數計算機
眾數中位數計算
眾數中位數計算
標準差計算機
標準差計算機
四分位數計算機
四分位數計算機
次數分配表
次數分配表
相關係數計算機
相關係數計算機
常態分布機率
常態分布機率
z 分數計算機
z 分數計算機
信賴區間計算機
信賴區間計算機
樣本數計算機
樣本數計算機
捉放法與抽樣調查
捉放法與抽樣調查
p 值計算機
p 值計算機
比例與百分比計算工具
百分比計算機
百分比計算機
增減率計算機
增減率計算機
百分比差異
百分比差異
百分誤差計算機
百分誤差計算機
比例計算機
比例計算機
打折計算機
打折計算機
營業稅計算機
營業稅計算機
毛利率計算機
毛利率計算機
速度計算工具
速率計算機
速率計算機
密度與濃度計算工具
密度計算機
密度計算機
莫耳濃度計算機
莫耳濃度計算機
分子量/莫耳質量
分子量/莫耳質量
物理與電學計算工具
歐姆定律計算
歐姆定律計算
瓦數↔安培換算
瓦數↔安培換算
電阻色碼計算
電阻色碼計算
電壓降計算
電壓降計算
單位換算計算工具
坪↔平方公尺換算
坪↔平方公尺換算
重量單位換算
重量單位換算
鞋碼換算
鞋碼換算
整數與正負數計算工具
除法直式計算
除法直式計算
最小公倍數計算
最小公倍數計算
最大公因數計算
最大公因數計算
正負數計算機
正負數計算機
質因數分解
質因數分解
一次不定方程式
一次不定方程式
同餘與餘數計算
同餘與餘數計算
因數計算機
因數計算機
羅馬數字轉換
羅馬數字轉換
分數、小數與四捨五入計算工具
分數計算機
分數計算機
帶分數計算機
帶分數計算機
約分計算機
約分計算機
分數換小數
分數換小數
小數換分數
小數換分數
四捨五入計算機
四捨五入計算機
方程式與不等式計算工具
一元一次方程式
一元一次方程式
聯立方程式
聯立方程式
一元二次方程式
一元二次方程式
絕對值方程式
絕對值方程式
一元二次不等式
一元二次不等式
多項式與乘法展開計算工具
二項式定理
二項式定理
平方根與 n 次方根計算工具
根號化簡
根號化簡
開根號計算
開根號計算
指數與對數計算工具
次方計算機
次方計算機
對數計算機
對數計算機
常用對數與位數
常用對數與位數
科學記號換算
科學記號換算
科學記號運算
科學記號運算
半衰期計算機
半衰期計算機
複數計算工具
複數計算機
複數計算機
複數極式轉換
複數極式轉換
棣美弗定理
棣美弗定理
函數與圖形計算工具
直線斜率計算
直線斜率計算
一次函數計算機
一次函數計算機
正比反比計算機
正比反比計算機
二次函數 y=ax²
二次函數 y=ax²
兩點距離公式
兩點距離公式
空間兩點距離
空間兩點距離
內分點與外分點
內分點與外分點
點到直線的距離
點到直線的距離
經緯度距離計算
經緯度距離計算
配方法計算機
配方法計算機
圓方程式計算機
圓方程式計算機
圓錐曲線計算機
圓錐曲線計算機
極坐標轉換
極坐標轉換
數列計算工具
等差數列計算
等差數列計算
等比數列計算
等比數列計算
費氏數列計算
費氏數列計算
遞迴關係式計算
遞迴關係式計算
向量計算工具
向量計算機
向量計算機
向量外積計算
向量外積計算
矩陣計算工具
矩陣計算機
矩陣計算機
行列式計算機
行列式計算機
反矩陣計算
反矩陣計算
平面圖形計算工具
sin cos tan 計算
sin cos tan 計算
度與弧度換算
度與弧度換算
三角函數疊合
三角函數疊合
三角形計算機
三角形計算機
三角形面積計算
三角形面積計算
直角三角形計算
直角三角形計算
畢氏定理計算
畢氏定理計算
多邊形內角外角
多邊形內角外角
相似比與面積比
相似比與面積比
平行線與角
平行線與角
長方形面積
長方形面積
平行四邊形面積
平行四邊形面積
梯形面積
梯形面積
圓的計算
圓的計算
扇形面積
扇形面積
圓周角定理
圓周角定理
橢圓面積
橢圓面積
立體圖形計算工具
正方體體積
正方體體積
正方體表面積
正方體表面積
長方體體積
長方體體積
長方體表面積
長方體表面積
圓柱體積
圓柱體積
圓柱表面積
圓柱表面積
球的體積
球的體積
球的表面積
球的表面積
球冠的體積
球冠的體積
球冠的表面積
球冠的表面積
橢球的體積
橢球的體積
橢球的表面積
橢球的表面積
四角錐體積
四角錐體積
四角錐表面積
四角錐表面積
圓錐體積
圓錐體積
圓錐表面積
圓錐表面積
圓錐台體積
圓錐台體積
圓錐台表面積
圓錐台表面積
圓管體積
圓管體積
膠囊形體積
膠囊形體積
膠囊表面積
膠囊表面積
日期與時間計算工具
年齡計算
年齡計算
天數計算
天數計算
幾天後的日期
幾天後的日期
幾小時後的日期時間
幾小時後的日期時間
星期幾查詢
星期幾查詢
時間加減計算機
時間加減計算機
時差計算機
時差計算機
工時計算機
工時計算機
時間差計算機
時間差計算機
打卡工時計算
打卡工時計算
金融與經濟計算工具
複利計算
複利計算
單利計算
單利計算
利息計算
利息計算
財務計算機 TVM
財務計算機 TVM
現值計算
現值計算
未來值計算
未來值計算
ROI 計算機
ROI 計算機
IRR 計算機
IRR 計算機
回收期間計算
回收期間計算
平均報酬率計算
平均報酬率計算
GDP 計算機
GDP 計算機
網路行銷與廣告指標計算工具
CTR 點擊率計算
CTR 點擊率計算
CVR 轉換率計算
CVR 轉換率計算
CPC、CPM、CPA 計算
CPC、CPM、CPA 計算
ROAS 計算
ROAS 計算
損益平衡 CPA
損益平衡 CPA
LTV 顧客終身價值
LTV 顧客終身價值
CAC 顧客取得成本
CAC 顧客取得成本
流失率計算
流失率計算
A/B 測試顯著性
A/B 測試顯著性
A/B 測試樣本數
A/B 測試樣本數
SEO 流量預估
SEO 流量預估
損益平衡點計算
損益平衡點計算
成本率毛利率換算
成本率毛利率換算
CAGR 計算機
CAGR 計算機
健康與健身計算工具
BMI 計算機
BMI 計算機
睡眠週期計算
睡眠週期計算
熱量計算機
熱量計算機
BMR 計算機
BMR 計算機
TDEE 計算機
TDEE 計算機
理想體重計算機
理想體重計算機
體脂率計算機
體脂率計算機
去脂體重計算機
去脂體重計算機
消耗熱量計算機
消耗熱量計算機
蛋白質計算機
蛋白質計算機
三大營養素計算
三大營養素計算
碳水攝取量計算
碳水攝取量計算
脂肪攝取量計算
脂肪攝取量計算
孩子身高預測
孩子身高預測
運動計算工具
高爾夫差點計算
高爾夫差點計算
配速計算機
配速計算機
1RM 計算機
1RM 計算機
目標心跳率計算
目標心跳率計算
氣象計算工具
體感溫度計算
體感溫度計算
風寒效應計算
風寒效應計算
露點溫度計算
露點溫度計算
電腦計算工具
進位轉換
進位轉換
子網路計算機
子網路計算機
下載時間計算
下載時間計算
家計與水電瓦斯費計算工具
家電電費計算
家電電費計算
度數算電費/反推
度數算電費/反推
年耗電量算電費
年耗電量算電費
冷氣坪數計算
冷氣坪數計算
冷氣電費計算
冷氣電費計算
暖氣電費比較
暖氣電費比較
瓦斯與電費比較
瓦斯與電費比較
換 LED 省多少
換 LED 省多少
薪資換算
薪資換算
家庭收支計算
家庭收支計算
汽車計算工具
油錢計算
油錢計算
電動車充電費用
電動車充電費用
電動車 vs 油車
電動車 vs 油車
油耗計算
油耗計算
輪胎尺寸計算
輪胎尺寸計算
太陽能發電與儲能計算工具
太陽能發電量
太陽能發電量
太陽能板片數
太陽能板片數
太陽能回本年限
太陽能回本年限
儲能電池容量試算
儲能電池容量試算
居家與 DIY計算工具
磁磚數量計算
磁磚數量計算
樓梯尺寸計算
樓梯尺寸計算
混凝土用量計算
混凝土用量計算
房間牆面積計算
房間牆面積計算
壁紙用量計算
壁紙用量計算
油漆用量計算
油漆用量計算
木地板片數計算
木地板片數計算
外牆面積計算
外牆面積計算
碎石用量計算
碎石用量計算
水泥砂漿配比
水泥砂漿配比
坡度計算
坡度計算
木材裁切計算
木材裁切計算
建蔽率、容積率
建蔽率、容積率
地板捲材用量
地板捲材用量
隔熱材用量計算
隔熱材用量計算
窗簾尺寸計算
窗簾尺寸計算
電視尺寸與距離
電視尺寸與距離
培養土用量計算
培養土用量計算
草皮用量計算
草皮用量計算
空心磚數量計算
空心磚數量計算
紅磚數量計算
紅磚數量計算
木棧板材料計算
木棧板材料計算
坡道長度計算
坡道長度計算
螺絲導孔與長度
螺絲導孔與長度
換氣量計算
換氣量計算
油漆稀釋計算
油漆稀釋計算
踢腳板長度計算
踢腳板長度計算
百葉窗捲簾尺寸
百葉窗捲簾尺寸
掛畫高度與位置
掛畫高度與位置
排水坡度與高低差
排水坡度與高低差
螺絲數量計算
螺絲數量計算
木材才數計算
木材才數計算
圍籬材料計算
圍籬材料計算
木材收縮計算
木材收縮計算
矽利康用量計算
矽利康用量計算
房間熱損失計算
房間熱損失計算
家具搬入計算
家具搬入計算
搬家紙箱數量
搬家紙箱數量
收納容量計算
收納容量計算
板材裁切計算
板材裁切計算
層板承重計算
層板承重計算

亂數產生器(隨機數字產生器)

輸入下限和上限,按下「計算」,就會產生該範圍內的亂數。也可以指定個數、小數點後的位數,以及是否可重複(下限和上限以外可以留空。留空時為「整數 1 個、可重複」)。

個數請輸入 1~999 的整數,小數點後的位數請輸入 0~50 的整數。即使輸入相同,每按一次都會產生不同的亂數。
計算結果
在左側輸入欄輸入範圍,按下「計算」,產生的亂數就會顯示在這裡。

這個頁面可以做什麼

  • 只要輸入下限和上限,馬上就能產生該範圍內的亂數(隨機選出的數)
  • 不只整數,也能產生小數的亂數。小數點後的位數可以指定 0~50 位
  • 一次最多可以產生 999 個,也能選擇「可重複、不重複」。產生 2 個以上時,除了產生的順序,也會同時顯示遞增、遞減排序的結果
  • 從 1~6 這樣的小範圍,到超過 20 位數的巨大整數都能處理
  • 這個頁面還整理了亂數原理的淺顯解說,以及可直接複製到 Excel、Google 試算表、Python 使用的公式
本頁的亂數是電腦用計算式產生的「偽亂數」(採用密碼學領域也使用的高品質產生方式)。用於抽籤、遊戲、模擬等用途已經足夠隨機,但若要產生加密金鑰或密碼本身,請使用不經過網路傳輸的專用工具。

這個計算有什麼用?

公平的抽獎、抽籤、換座位(排值日生)

幫報名者或學生編號,再用亂數來選,就是不摻雜任何人意圖的公平選法。每個人被選中的機率都相同(均勻分布),這就是有數學保證的「抽籤」。
在台灣,大樂透是「從 01~49 選 6 個、不重複」,正是這種形式,選法約有 1,398 萬種(13,983,816 種)。

民意調查、統計調查的隨機抽樣

「不必問遍全台灣的人,為什麼調查一千多人就能了解民意?」——它的基礎,就是用亂數選出受訪者的隨機抽樣。刻意挑選會讓結果偏差,所以用亂數來選,支撐了調查的可信度。
台灣的民調常用的電話隨機撥號(RDD),是用亂數產生電話號碼本身來撥打的方法,讓沒有登記在電話簿上的人也有同等的機會被抽中;近年也會把市話和手機一起抽樣。

模擬(蒙地卡羅法)——金融、氣象、科學

即使是複雜到無法用公式解出的問題,只要用亂數試驗好幾萬次並統計結果,就能得到接近答案的值。這稱為蒙地卡羅法,廣泛用於金融機構的風險計算、氣象的系集預報(把條件稍微改變、進行好幾組預測計算的天氣預報方法),以及物理、醫療的研究。
「亂數的平均會趨近期望值」,這個在本頁學到的性質,就是它的理論基礎。

遊戲的隨機性(骰子、洗牌、轉蛋)

數位遊戲裡的偶然——骰子的點數、洗牌、轉蛋的抽選、地圖的自動產生——全都是用偽亂數做出來的。
「只要種子相同,就會重現相同的數列」這個偽亂數的性質,反而被積極運用在重播功能,以及「和朋友分享同一個種子碼的地圖一起玩」這類機制上。

支撐加密與資訊安全的亂數(以及偽亂數的極限)

網購的加密連線、一次性密碼(OTP),沒有「攻擊者無法預測的數」=亂數就無法成立。
這裡不能用可能被預測的一般偽亂數,而是使用經過密碼學強化的產生器,或從熱雜訊等物理現象產生的硬體亂數。「亂數的品質」左右社會的安全,是最嚴格的應用例子。

公式

整數亂數出現各個值的機率(離散均勻分布)
數學寫法 (一般的數學式)
\(P(X=k)\) \(=\) \(1\) \(\div\) \((b-a+1)\)
文字寫法 (把符號換成文字的公式)
③ \(P(X=k)\):出現某個整數 \(k\) 的機率 \(=\) ① 全體的機率 \(1\) \(\div\) ② \((b-a+1)\):整數候選的個數
用文字讀公式
① 把 全體的機率 \(1\)
② 平分成 \((b-a+1)\):整數候選的個數 份,
③ 就得到 \(P(X=k)\):出現某個整數 \(k\) 的機率 (每個整數出現的機率都相同)。
簡單範例
骰子可以看成「1~6 的整數亂數」。擲出 3 的機率是
擲出 3 的機率 \(P\) \(=\) 全體的機率 \(1\) \(\div\) 候選的個數(6 個)
\(1 \div (6 - 1 + 1) = \frac{1}{6} \approx 0.167\ \ (16.7\%)\)
思考重點
亂數產生器的設計是「範圍內的每個數出現的機率都相同」。這種出現方式稱為均勻分布。下限 \(a\)、上限 \(b\) 之間的整數候選有 \(b - a + 1\) 個(例:1~6 就是 \(6 - 1 + 1 = 6\) 個),所以每個整數出現的機率都是這個個數分之一。不會因為「剛剛出現 3,下次就比較不容易出現 3」,每次都重新開始,機率相同。
小數亂數出現的容易程度(連續均勻分布的機率密度)
數學寫法 (一般的數學式)
\(f(x)\) \(=\) \(1\) \(\div\) \((b-a)\)
文字寫法 (把符號換成文字的公式)
③ \(f(x)\):機率密度(圖形的高度) \(=\) ① 全體的機率 \(1\) \(\div\) ② \((b-a)\):範圍的寬度
用文字讀公式
① 把 全體的機率 \(1\)
② 平均攤在 \((b-a)\):範圍的寬度 上,
③ 就得到 \(f(x)\):機率密度(圖形的高度) (圖形是平的長方形)。
簡單範例
0~10 的小數亂數,圖形的高度是 1 ÷ 10 = 0.1。「落在 2 以上、5 以下的機率」可以用 高度 × 寬度 求出
圖形的高度 \(f(x)\) \(=\) 全體的機率 \(1\) \(\div\) 範圍的寬度(10)
\(1 \div (10 - 0) = 0.1\)
\(0.1 \times (5 - 2) = 0.3\ \ (30\%)\)
思考重點
小數亂數的候選有無限多個,所以「剛好等於 3.000…的機率」不論哪一點都是 0。因此小數亂數要用「落在這個範圍內的機率」來思考。機率就是圖形的面積(高度 × 寬度),整個範圍是 \(0.1 \times 10 = 1\)(100%)。高度 \(f(x)\) 在範圍內處處相同=每個地方都一樣容易出現,這就是均勻分布。
亂數的平均(均勻分布的期望值)
數學寫法 (一般的數學式)
\(E[X]\) \(=\) \((a+b)\) \(\div\) \(2\)
文字寫法 (把符號換成文字的公式)
③ \(E[X]\):亂數的平均(期望值) \(=\) ① \((a+b)\):下限 \(a\) 與上限 \(b\) 的和 \(\div\) ② 除數 \(2\)(取正中間)
用文字讀公式
① 把 \((a+b)\):下限 \(a\) 與上限 \(b\) 的和
② 除以 除數 \(2\) ,取範圍的正中間,
③ 就得到 \(E[X]\):亂數的平均(期望值) 。
簡單範例
產生很多個 1~100 的整數亂數時,它們的平均會趨近的值是
\(E[X]\):亂數的平均(期望值) \(=\) 下限與上限的和(1 + 100) \(\div\) 除數(2)
\((1 + 100) \div 2 = 50.5\)
思考重點
均勻分布在範圍內左右對稱,所以平均(期望值)剛好在正中間。骰子(1~6)就是 \((1+6) \div 2 = 3.5\)——每一次只會擲出整數,但擲很多次的平均會趨近 3.5。分散程度的參考(變異數),小數的均勻亂數可以用 \(V[X] = \frac{(b-a)^2}{12}\) 求出。
把 0~1 的亂數轉換成範圍內的整數亂數
數學寫法 (一般的數學式)
\(n\) \(=\) \(a\) \(+\) \(\lfloor\) \(u\) \(\times\) \((b-a+1)\) \(\rfloor\)
文字寫法 (把符號換成文字的公式)
⑤ \(n\):範圍內的整數亂數 \(=\) ④ \(a\):下限 \(+\) \(\lfloor\) ① \(u\):0 以上、未滿 1 的亂數 \(\times\) ② \((b-a+1)\):整數候選的個數 ③ \(\rfloor\)
用文字讀公式
① 把 \(u\):0 以上、未滿 1 的亂數
② 乘上 \((b-a+1)\):整數候選的個數 來拉伸,
③ 用符號 \(\lfloor\ \rfloor\)(下取整函數)把小數點以下無條件捨去成整數,
④ 再加上 \(a\):下限 ,
⑤ 就得到 \(n\):範圍內的整數亂數 。
簡單範例
0 以上、未滿 1 的亂數是 0.32 時,轉換成 1~10 的整數亂數就是
整數亂數 \(n\) \(=\) 下限(1) \(+\) \(\lfloor\) 0~1 的亂數(0.32) \(\times\) 候選的個數(10 個) \(\rfloor\)
\(1 + \lfloor 0.32 \times 10 \rfloor = 1 + \lfloor 3.2 \rfloor = 1 + 3 = 4\)
思考重點
電腦的亂數多半先產生「0 以上、未滿 1 的小數」,再用這個式子轉換成想要的範圍。\(u\) 在 0 到 1 之間均勻出現的話,轉換後的 \(n\) 從 \(a\) 到 \(b\) 的每個整數出現的機率也都相同。用 Excel 的 RAND 函數產生整數亂數時,用的也正是這個式子(請看 Excel 的章節)。 \(\lfloor x \rfloor\) 表示不超過 \(x\) 的最大整數,台灣的課本也常用高斯符號 \([x]\) 來表示。
偽亂數產生方式的代表例子(線性同餘法)
數學寫法 (一般的數學式)
\(X_{n+1}\) \(=\) \((aX_n + c)\) \(\bmod\) \(m\)
文字寫法 (把符號換成文字的公式)
③ \(X_{n+1}\):下一個亂數 \(=\) ① 把目前的亂數 \(X_n\) 乘以 \(a\) 再加 \(c\) 的數 \(\bmod\) ② \(m\):除數
用文字讀公式
① 把 目前的亂數 \(X_n\) 乘以 \(a\) 再加 \(c\) 的數
② 除以 \(m\):除數 ,取餘數,
③ 就得到 \(X_{n+1}\):下一個亂數 (反覆這個步驟,產生一串亂數)。
簡單範例
乘數 5、加數 3、除數 16,最初的值(種子)設為 7 時,亂數數列會依序決定如下
下一個亂數 \(X_1\) \(=\) 7 乘以 5 再加 3 的數(38) \(\bmod\) 除數(16)
\((5 \times 7 + 3) \bmod 16 = 38 \bmod 16 = 6\)
\((5 \times 6 + 3) \bmod 16 = 33 \bmod 16 = 1\)
思考重點
只要反覆「乘、加、取餘數」這種簡單的計算,就能做出看起來雜亂無章的數列——這就是偽亂數的基本想法(這裡的 \(a, c, m\) 是事先決定好的常數,和上面公式的下限、上限是不同的東西)。 重要的性質是,只要最初的值(種子)相同,就會重現完全相同的數列。也就是說,用計算式產生的亂數並不是真正的偶然。實際的電腦使用的是把線性同餘法進一步改良的方法(梅森旋轉演算法等),但「由種子決定的計算數列」這個本質是相同的。
亂數產生器的亂數服從「範圍內每個數出現的機率都相同」的均勻分布。電腦的亂數是用計算式產生的偽亂數,只要種子(最初的值)相同,就會重現相同的數列——它並不是真正的偶然,這是最重要的重點。

符號與用語解說

符號

\(a\) a 亂數範圍的下限(大於或等於此數)。(例:1~100 的亂數,\(a = 1\))
\(b\) b 亂數範圍的上限(小於或等於此數)。(例:1~100 的亂數,\(b = 100\))
\(P(X=k)\) P X 等於 k 亂數 \(X\) 剛好等於整數 \(k\) 的機率。整數的均勻亂數,不論 \(k\) 是多少,值都相同。
\(f(x)\) f of x(機率密度) 表示小數亂數「出現容易程度」的圖形高度(機率密度函數)。均勻分布在範圍內處處高度相同。
\(E[X]\) E X(期望值) 產生很多個亂數 \(X\) 時,平均會趨近的值。E 是英文 Expectation(期望值)的字首。
\(u\) u 0 以上、未滿 1 的均勻亂數。電腦的亂數多半先以這個形式產生,再轉換成想要的範圍。
\(\lfloor\ \rfloor\) floor(下取整函數) 把裡面的數小數點以下無條件捨去成整數的符號。台灣的課本也常寫成高斯符號 \([x]\)。(例:\(\lfloor 3.2 \rfloor = 3\))
\(X_n\) X 下標 n 偽亂數數列的第 \(n\) 個值。最初的值 \(X_0\) 就是種子。
\(\bmod\) mod 取除法餘數的計算。(例:\(38 \bmod 16 = 6\)。38 除以 16 得 2 餘 6)

用語

亂數 像骰子的點數那樣,沒有規律、無法預測下一個會出現什麼的數。本頁的產生器會從指定的範圍中隨機選出數字。
均勻分布 範圍內每個值都一樣容易出現的分布。整數亂數是「每個整數的機率都相同」,小數亂數則是「圖形的高度處處相同」。
偽亂數 用計算式產生、「看起來像亂數」的數列(也稱為偽隨機數)。英文的產生器稱為 PRNG(Pseudo Random Number Generator,偽亂數產生器)。電腦的亂數幾乎全都是偽亂數。
種子 開始計算偽亂數時的最初的值(seed)。從相同的種子開始,就會重現完全相同的亂數數列。平常會依時間等自動決定,所以每次看起來都是不同的數列。
線性同餘法 反覆「乘、加、取餘數」,是產生偽亂數最經典的方法。很適合用來學習原理,但現在實際使用的主流是品質更高的方法(梅森旋轉演算法等)。
硬體亂數 從骰子、硬幣、大氣的電子雜訊、電子電路的熱雜訊等物理現象產生的亂數。不依靠計算式,無法重現,可以得到接近「真亂數」的數。
期望值 依機率出現的值「重複很多次時的平均」。均勻亂數的期望值剛好在範圍的正中間。
隨機抽樣 不加入人的意圖,用亂數等方式隨機選出調查對象。是統計調查避免偏差的基本方法,也稱為簡單隨機抽樣。

建議先了解的基礎知識

為了讓您「真正理解意義」地使用這個頁面的計算,這裡整理了建議事先理解的基礎知識。

有餘數的除法(國小三~四年級,8~10 歲)
  • 會求除法的餘數,例如 38 ÷ 16 = 2…6(線性同餘法會用到)
小數與無條件捨去(國小四~五年級,9~11 歲)
  • 會把 3.2 的小數點以下無條件捨去變成 3
  • 知道小數點後的「位數」,指的是十分位、百分位……這樣的位值
百分率(國小五~六年級,10~12 歲)
  • 能在小數和百分率之間互換,例如機率 0.1 和 10%
機率的基礎(國中九年級,14~15 歲)
  • 每種情形都一樣容易發生時,能用(符合的情形數)÷(所有的情形數)求出機率
  • 知道「剛剛擲出的點數」不會影響「下次擲出點數」的機率(獨立)
期望值(高中,15~18 歲)
  • 知道期望值表示「重複很多次時的平均」

用 Excel 計算的方法

把下方表格整個複製,貼到 Excel 的 A1 儲存格就能直接使用。
求「每個整數出現的機率」的表格
下限 a 1
上限 b 6
每個整數出現的機率 =1/(B2-B1+1)
求「小數亂數的圖形高度(機率密度)」的表格
下限 a 0
上限 b 10
機率密度(圖形的高度) =1/(B2-B1)
求「亂數的平均(期望值)」的表格
下限 a 1
上限 b 100
亂數的平均(期望值) =(B1+B2)/2
產生「整數亂數」的表格
下限 a 1
上限 b 100
整數亂數(每次重新計算都會改變) =B1+INT(RAND()*(B2-B1+1))
用「線性同餘法求下一個亂數」的表格
目前的亂數 Xn 7
乘數 a 5
加數 c 3
除數 m 16
下一個亂數 =MOD(B2*B1+B3,B4)
貼上後,上面的列就是輸入的儲存格,最後一列的公式會自動算出結果。
第 1 個表格會顯示約 0.1667(=1/6),第 3 個表格會顯示 50.5,第 5 個表格會顯示 6。
第 4 個表格的 RAND() 是產生「0 以上、未滿 1 的亂數」的函數,和「公式」章節的轉換式形式完全相同。每按一次 F9 鍵,就會產生新的亂數。
另外,整數亂數也有 Excel 專用的函數 =RANDBETWEEN(B1,B2),用 1 個函數就能得到相同的結果。

用 Google 試算表計算的方法

把下方表格整個複製,貼到 Google 試算表的 A1 儲存格就能直接使用。
求「每個整數出現的機率」的表格
下限 a 1
上限 b 6
每個整數出現的機率 =1/(B2-B1+1)
求「小數亂數的圖形高度(機率密度)」的表格
下限 a 0
上限 b 10
機率密度(圖形的高度) =1/(B2-B1)
求「亂數的平均(期望值)」的表格
下限 a 1
上限 b 100
亂數的平均(期望值) =(B1+B2)/2
產生「整數亂數」的表格
下限 a 1
上限 b 100
整數亂數(每次重新計算都會改變) =B1+INT(RAND()*(B2-B1+1))
用「線性同餘法求下一個亂數」的表格
目前的亂數 Xn 7
乘數 a 5
加數 c 3
除數 m 16
下一個亂數 =MOD(B2*B1+B3,B4)
可以直接使用和 Excel 相同的公式(RAND、RANDBETWEEN、INT、MOD 在 Google 試算表中也是相同的名稱)。
把表格整個複製、貼到 A1 儲存格,再把輸入儲存格的數值改成自己的值即可。

用 Python 計算的方法

import random

lower = 1     # 下限
upper = 100   # 上限
count = 5     # 產生的個數

# 整數亂數(可重複)
integers = [random.randint(lower, upper) for _ in range(count)]
# 整數亂數(不重複)
unique_integers = random.sample(range(lower, upper + 1), count)
# 小數亂數
decimals = [random.uniform(lower, upper) for _ in range(count)]

print(f"整數亂數(可重複):{integers}")
print(f"整數亂數(不重複):{unique_integers}")
print(f"小數亂數:{decimals}")

# 決定種子後,不論執行幾次都會重現相同的數列(偽亂數的性質)
random.seed(42)
print(f"種子 42 的亂數:{[random.randint(1, 100) for _ in range(3)]}")
只用標準函式庫的 random 模組就能執行(它是名為梅森旋轉演算法的偽亂數產生器)。執行最後 2 行,可以確認只要種子相同,每次的結果都會相同。另外,產生密碼或加密金鑰時,請不要用 random,而是使用專用的 secrets 模組。

用 LaTeX 等數學式語言的寫法(可直接複製)

整數亂數出現各個值的機率(離散均勻分布)
P(X = k) = 1 / (b − a + 1)
P(X = k) = \frac{1}{b - a + 1}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>P</mi><mo>(</mo><mi>X</mi><mo>=</mo><mi>k</mi><mo>)</mo>
    <mo>=</mo>
    <mfrac>
      <mn>1</mn>
      <mrow><mi>b</mi><mo>&#x2212;</mo><mi>a</mi><mo>+</mo><mn>1</mn></mrow>
    </mfrac>
  </mrow>
</math>
P(X = k) = 1/(b - a + 1)
1/(b - a + 1)
p := 1/(b - a + 1);
p = 1/(b - a + 1);
P(X = k) = 1/(b - a + 1)
小數亂數出現的容易程度(連續均勻分布的機率密度)
f(x) = 1 / (b − a)
f(x) = \frac{1}{b - a}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo>
    <mo>=</mo>
    <mfrac>
      <mn>1</mn>
      <mrow><mi>b</mi><mo>&#x2212;</mo><mi>a</mi></mrow>
    </mfrac>
  </mrow>
</math>
f(x) = 1/(b - a)
1/(b - a)
f := 1/(b - a);
f = 1/(b - a);
f(x) = 1/(b - a)
亂數的平均(均勻分布的期望值)
E[X] = (a + b) / 2
E[X] = \frac{a + b}{2}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>E</mi><mo>[</mo><mi>X</mi><mo>]</mo>
    <mo>=</mo>
    <mfrac>
      <mrow><mi>a</mi><mo>+</mo><mi>b</mi></mrow>
      <mn>2</mn>
    </mfrac>
  </mrow>
</math>
E[X] = (a + b)/2
(a + b)/2
mean := (a + b)/2;
mean_x = (a + b)/2;
E[X] = (a + b)/2
把 0~1 的亂數轉換成範圍內的整數亂數
n = a + ⌊u × (b − a + 1)⌋
n = a + \lfloor u \times (b - a + 1) \rfloor
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>n</mi>
    <mo>=</mo>
    <mi>a</mi>
    <mo>+</mo>
    <mo>&#x230A;</mo>
    <mi>u</mi>
    <mo>&#xD7;</mo>
    <mo>(</mo><mi>b</mi><mo>&#x2212;</mo><mi>a</mi><mo>+</mo><mn>1</mn><mo>)</mo>
    <mo>&#x230B;</mo>
  </mrow>
</math>
n = a + |__ u xx (b - a + 1) __|
a + Floor[u*(b - a + 1)]
n := a + floor(u*(b - a + 1));
n = a + floor(u*(b - a + 1));
n = a + ⌊u × (b - a + 1)⌋
偽亂數產生方式的代表例子(線性同餘法)
Xₙ₊₁ = (a·Xₙ + c) mod m
X_{n+1} = (a X_n + c) \bmod m
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <msub><mi>X</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub>
    <mo>=</mo>
    <mo>(</mo>
    <mi>a</mi><msub><mi>X</mi><mi>n</mi></msub>
    <mo>+</mo><mi>c</mi>
    <mo>)</mo>
    <mo>mod</mo>
    <mi>m</mi>
  </mrow>
</math>
X_(n+1) = (a X_n + c) mod m
Mod[a*x + c, m]
X[n + 1] := (a*X[n] + c) mod m;
x_next = mod(a*x + c, m);
X_(n+1) = (a X_n + c) mod m

請 ChatGPT  幫忙計算的方法

你是產生亂數的助理。請務必實際執行 Python 程式碼來進行下列工作,並只以執行結果的數值作為回答的依據(亂數不執行程式碼就無法產生。請不要用猜測或自己編的數字)。

1. 產生 5 個 1~100 的整數亂數,不可重複。
2. 把這 5 個數由小到大排序。
3. 產生 1 個 0.2~112.5 範圍內的小數亂數,取到小數點後 3 位。

請列出使用的程式碼,以及執行結果的數值。

使用方法
  1. 1
    輸入數值
    在輸入欄中輸入要計算的數值
  2. 2
    計算
    按下「計算」按鈕
  3. 3
    查看結果
    計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
  DataChef 的特色
簡單又免費
免費且無使用次數限制
不需專業知識,操作直覺又簡單
免註冊會員
開啟頁面即可立即使用
無須登錄任何個人資料
安全又安心
通訊全程高度加密
按下「下載」後自動刪除檔案
高速
顯示與轉換都快速順暢,毫無等待壓力
無浮水印
沒有浮水印
無須標註來源出處
可商業使用
可免費用於商業用途
亦無須事先取得商用授權