Excel 產生各種亂數的公式整理與函數教學

本篇整理了各種 Excel 中常用的亂數產生公式,還有相關數學函數的用教學。

Excel 中有好幾種可以產生隨機亂數資料的函數,以下分別介紹各種不同的隨機數值資料產生方法,包含浮點數、整數或是固定位數的小數等。

Excel 公式速查表

這裡整理了 Excel 中常用的亂數產生方式,有各種不同的隨機分佈,方便大家快速查詢、直接複製使用。

Excel 會在每次開啟檔案時重新計算這些亂數,每次產生的數值都會不同,如果要手動讓 Excel 重新產生所有的亂數,可以按 F9 鍵。

均勻分布

均勻分布(uniform distribution)就是所有的亂數出現的機率都相同,以下是連續型離散型的各種常用公式。

Excel 公式 資料型態 亂數範圍
=RAND() 浮點數 0 ≦ x < 1
=RAND()*100 浮點數 0 ≦ x < 100
=RAND()*100-50 浮點數 -50 ≦ x < 50
=ROUNDDOWN(RAND(),2) 小數點以下 2 位 0 ≦ x ≦ 0.99
=ROUNDDOWN(RAND()*10,2) 小數點以下 2 位 0 ≦ x ≦ 9.99
=RANDBETWEEN(1,100) 整數 1 ≦ x ≦ 100
=RANDBETWEEN(-1,1) 整數 -1 ≦ x ≦ 1
=RANDBETWEEN(0,10) 整數 0 ≦ x ≦ 10
=RANDBETWEEN(1,100)/100 小數點以下 2 位 0.01 ≦ x ≦ 1
=RANDBETWEEN(-1000,1000)/100 小數點以下 2 位 -10 ≦ x ≦ 10

這是在 Excel 中實際測試的情況,每次所產生的亂數都會不同,按 F9 可以重新產生亂數資料。

excel-random-number-generation-formula-1

常態分布

常態分布(normal distribution,又稱高斯分布)是一般資料分析上最常使用的分布之一,以下是在 Excel 中產生常態分布資料的公式。

Excel 公式 平均值 標準差
=NORM.INV(RAND(),0,1) 0 1
=NORM.INV(RAND(),3.1,8.6) 3.1 8.6
=NORMINV(RAND(),0,1)舊版 0 1
=NORMINV(RAND(),3.1,8.6)舊版 3.1 8.6

這裡的 NORM.INVNORMINV 兩個函數其作用是相同的,NORM.INV 是新版的函數,而 NORMINV 是舊版的,以下是 NORM.INV函數在 Excel 中實際測試的情況。

excel-random-number-generation-formula-2

以上是比較常用的幾種公式組合,接下來介紹的是這些函數的詳細說明與更進階的用法。

亂數相關的 Excel 函數

這裡簡單介紹上面有用到的幾個函數。

RAND 函數

Excel 的 RAND 函數可以產生大於或等於 0 且小於 1 的均勻分布(uniform distribution)隨機實數。

若要產生介於 ab 之間的隨機亂數,可使用這樣的公式:

=RAND()*(b-a)+a

這樣所產生的數值範圍就是 a ≦ x < b

當按下 F9 時,所有的 RAND 函數就會重新產生亂數資料。

RANDBETWEEN 函數

Excel 的 RANDBETWEEN 函數會傳回指定區間的隨機整數,第一個參數是指定其傳回的最小的整數值,而第二個參數則是指定傳回的最大的整數值。例如產生 1100 之間的亂數:

=RANDBETWEEN(1,100)

也可以產生負數,例如產生 -1010 之間的亂數:

=RANDBETWEEN(-10,10)

當按下 F9 時,所有的 RANDBETWEEN 函數就會重新產生亂數資料。

NORM.INV 函數

Excel 的 NORM.INV 函數可傳回特定常態累積分布函數之反函數值,其第一個參數是常態分布的機率值,第二個與第三個參數是常態分布的平均值與標準差。

這個函數可跟 RAND 函數結合,產生常態分布的亂數,例如產生標準常態分布的亂數:

=NORM.INV(RAND(),0,1)

NORMINV 函數 是比較舊的版本,應盡量避免使用。

ROUNDDOWN 函數

ROUNDDOWN 函數會以趨近於零的方式將小數點以下指定位數之後的值無條件捨去。例如將小數點之後的值都捨去:

=ROUNDDOWN(3.14159, 0)

這樣得到的結果會是 3。若要保留小數點以下 2 位,而其餘捨去,可用:

=ROUNDDOWN(3.14159, 2)

這樣得到的結果會是 3.14

Windows

3 Comments

  1. 請問 我使用=ROUNDDOWN(RANDBETWEEN(80.245,90.1254),2)

    跑出來的數字沒有小數
    想要有小數點的亂數 可是全部都是.00
    請問要怎麼改呢

    • Lily

      sorry
      上一個留言請忽略,剛剛沒看清楚
      改成以下這樣應該就可以了

      =ROUNDDOWN(RANDBETWEEN(802450,901254)/10000,2)

  2. 感謝

Leave a Reply