Chapter 10. 函式 (五):特殊功能函式 › 10.3 資料生成
10.3 資料生成
本節將介紹與生成資料相關的函式,包括重複資料、等差級數資料與隨機資料,如下:
- REPT:將文字重複多次
語法 | REPT (重複文字, 重複次數) |
輸入 |
|
輸出 | 將 重複文字 重複 重複次數 次,輸出在單一儲存格。 |
- SEQUENCE:生成多列多欄的等差數列
語法 | SEQUENCE (列數, [欄數], [起始值], [間距]) |
輸入 |
|
輸出 | 輸出 列數 列、欄數 欄、首項為 起始值、公差為 間距 的等差數列,若 欄數 大於 1 會先左至右填滿整列,填滿後再換下一列。 |
- RAND / RANDARRAY:隨機生成 0~1 之間的小數
語法 | |
輸入 | 列數 / 欄數:輸出列數 / 欄數,皆預設為 1。 |
輸出 | 0~1 之間的隨機小數,每編輯一次試算表就會重新生成。其中 RAND 只會在使用函式的儲存格輸出,RANDARRAY 則輸出 列數 列、欄數 欄。 |
- RANDBETWEEN:隨機生成 m~n 之間的整數
語法 | RANDBETWEEN (最小值, 最大值) |
輸入 | 最小值 / 最大值:隨機整數的最小、最大值。 |
輸出 | 隨機生成一個 最小值 與 最大值 之間的整數。 |
- NORMINV:輸出指定值、平均值和標準值的反常態分佈函式值
語法 | NORMINV (x, 平均值, 標準差) |
輸入 |
|
輸出 | 傳回 x、平均值 和 標準差 的反常態分佈函式值。 例如 =NORMINV(0.025, 100, 15) 會輸出 129.4,在平均 = 100、標準差 = 15 的情況下,數值大於 129.4 的機率只有 1 − 0.975 = 0.025。 |
以下使用六個範例說明上述函式的用法:
- 重複 5 次 "Hi",每次中間用半形逗號間隔
公式
- =LEFT(REPT("Hi,",5),LEN("Hi,")*5-1)
- =JOIN(",",SPLIT(REPT("Hi,",5),","))
解說
- 兩者的做法相似,都是先使用 REPT 重複五次 "Hi,",再想辦法將最後的逗點去掉。
- 第一種方法使用 LEFT 取得除了最後一個逗點之外的內容,長度則使用 ("Hi," 的長度 × 5) − 1 即可。
- 第二種方法先用 SPLIT 分割成多欄,再使用 JOIN 合併,是因為 SPLIT 的 移除空白文字 預設 TRUE,為會自動去掉最後一個逗號的內容,因此合併後不會有最後的逗點。
- 生成一個 2 列、3 欄的等差級數,其首項為 1、公差為 5
公式
=SEQUENCE(2,3,1,5)
解說
依序輸入列數、欄數、首項、公差 (間距) 即可。
- 隨機生成 1 列、3 欄在 0~1 之間的小數
公式
=RANDARRAY(1,3)
解說
依序輸入列數、欄數即可。
- 隨機生成一個 20~21 之間的小數
公式
=20+RAND()
解說
RAND 只會生成 0~1,即非整數的小數部分,因此只要加上整數 20 即可。
- 隨機生成一個 30~40 之間的小數
公式
- =RANDBETWEEN(30,39)+RAND()
- =30+10*RAND()
解說
- 第一種方式是與 D. 相同,只是將整數部分改成使用 RANDBETWEEN,但因為 RANDBETWEEN 包含 最大值,因此要將 最大值 設為 39。
- 第二種方式是將 RAND 倍數放大,例如 10*RAND() 會輸出 0~10 之間的小數,再加上 30 就會變成 30~40 之間的小數。
- 隨機生成一個數字,其平均值為 0、標準差為 1
公式
=NORMINV(RAND(),0,1)
解說
可以將這個例子當作是如何生成一個常態分配的隨機數字,而因為 NORMINV 的 x 要在 0~1 之間,所以 RAND() 剛好可以作為 x。
了解本節的函式後,可以用於各種需要抽獎、實驗等需要隨機數字的時機 (例如:蒙地卡羅模擬法),更可以在學習統計學之後搭配 Google Sheets / Excel 中各種統計相關的函式進行計算,但各項統計函式礙於篇幅的關係,在此僅介紹較常用的 NORMINV,請有興趣的同學再自行參考各式官方文件。