查詢 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)
留言
張貼留言