Excel 使用 RAND 函數實作 RANDBETWEEN 函數

查詢 Excel 產生隨機數字的文件時,突發奇想如果想用 RAND 函數,實作 RANDBETWEEN 函數要怎麼做?

Photo by Jerry Kiesewetter on StockSnap


問題瞭解

微軟的 RAND 函數 與  RANDBETWEEN 函數 技術文件提到

(1) RAND 函數的功用是

= RAND() ➡️ 大於或等於 0 且小於 1 的隨機實數

(2) RANDBETWEEN 函數的功用是

= RANDBETWEEN(1, 100) ➡️ 1 到 100 之間的隨機整數

問題解決

狀況 1. 產生大於或等於 0 且小於或等於 60 的隨機整數

使用 RANDBETWEEN 函數

= RANDBETWEEN(0, 60) ➡️ 大於或等於 0 且小於或等於 60 的隨機整數

改成使用 ROUND 函數,直覺的想法是原本 0 ~ 1 的數字範圍,放大 60 倍

= RAND() * 60 ➡️ 大於或等於 0 且小於 60 的隨機實數

但是 RANDBETWEEN(0, 60) 是回傳隨機整數,而 RAND() 是回傳實數 (有小數點的數字),所以需要加上四捨五入的 ROUND 函數,讓 RAND 回傳數值可以小於或等於 60。修改為:

= ROUND (RAND() * 60) ➡️ 大於或等於 0 且小於或等於 60 的隨機整數


狀況 2. 產生大於或等於 5 且小於或等於 60 的隨機整數

如果使用 RANDBETWEEN 函數

RANDBETWEEN(5, 60) ➡️ 大於或等於 5 且小於或等於 60 的隨機整數

改成使用 ROUND 函數,需要兩個步驟

(1) 將原本 0~1 數字範圍,放大 55 倍 (60 - 5 = 55)

= ROUND (RAND() * 55) ➡️ 大於或等於 0 且小於或等於 55 的隨機整數

(2) 將前一步驟結果,再加上 5

= ROUND (RAND() * 55) + 5 ➡️ 大於或等於 5 且小於或等於 60 的隨機整數

公式整理

整理成通用的公式:產生大於或等於 min 且小於或等於 max 的隨機整數

= ROUND (RAND() * (max - min) ) + (max - min) 


參考資料

留言