ChatGPT 教我在 Numbers、Excel 製作簡易樂透抽獎系統,活動尾牙抽獎可以這樣用


Numbers Excel 製作抽獎系統

之前果仁有舉辦一個「2024 台北國際電玩展」抽一日票的活動,要從所有參加活動的人當中,抽出 10 名的得獎者,之前都是上網找抽獎工具,但是我就怕有人會說那個不公正,所以決定用 Apple 自製的 Numbers 或是 Microsoft 的 Excel 來做。

下面一方面跟大家分享怎麼做,一方面也當作是一個紀錄。

要抽出多名中獎者,利用隨機產生數字並排序即可

因為一開始我並不知道在 Excel 或是 Numbers 中有什麼函數可以使用,所以我把需求丟給了 ChatGPT,請他告訴我如何使用 Numbers 或是 Excel 在一份清單中抽出 10 名獲獎者。

或許在 Numbers 或 Excel 中沒有這種「隨機幾取幾」的函數,所以 ChatGPT 教我另外一種方法。步驟其實也不難,大致上就是:

  1. 先給每個人一組隨機的號碼
  2. 把號碼那一欄進行排序
  3. 抓出排序後的前五名就是中獎者

實際製作的方法如下:

在每一個參加者後面多加一個欄位,然後在最上面那格輸入:

RAND()

Numbers Excel 製作抽獎系統

按下 Enter 後,就會隨機產生一組數字。

Numbers Excel 製作抽獎系統

接著把這個欄位選起來,按住黃色點點往下拉。

Numbers Excel 製作抽獎系統

就會替每一筆資料產生一組亂碼,這組數字因為取到小數點後面好幾位,所以重複的機率相當小。

Numbers Excel 製作抽獎系統

接著到這個欄位的最上方,點一下右邊的箭頭叫出功能選單,然後無論是選升冪排列或降冪排列都可以。

Numbers Excel 製作抽獎系統

排序完畢以後,取前 5 名(或是看你的中獎人數設定多少)就是最終中獎的名單。

Numbers Excel 製作抽獎系統

只要抽出一名中獎者,利用隨機生成數字即可

另外也補充,如果你是要在一串名單中抽出一個人的話,這個其實非常容易,就是利用「RANDBETWEEN(A,B)」這個公式就可以了。

假設參加抽獎的人共有 1000 人,每個人都有一個自己的號碼,那就在隨便一個格子上輸入:

RANDBETWEEN(1,1000)

意思就是在 1 到 1000 中隨機產生一個數字。

Numbers Excel 製作抽獎系統

按下 Enter 以後,就會隨機生成一個數字給你,看是誰拿到這個序號的抽獎號碼,他就是中獎者。

Numbers Excel 製作抽獎系統

這個每一次按下 Enter 都會隨機產生不同的號碼,所以無從做假。

上面教的這兩個 RANDBETWEEN()、RAND() 函數在 Excel 中也可以使用,抽獎的方式也是差不多,如果只要抽一個人的話,就是隨機選產生一個號碼,然後看這個號碼對應的人是誰就可以了,如果是要抽出多個人,就可以用 RAND() 產生 0 到 1 之間帶有小數點的隨機號碼。

基本上這樣其實已經蠻好用的了,雖然說 RAND() 函數所產生的結果有極小的機率會出重複的數字(畢竟他都算到小數點後面好幾位了,要重複確實不容易,但不能說沒機會)。

那就算剛好發生 RAND() 產生了重複的隨機號碼,但是透過排序後,如果號碼重複的人都在中獎的人數中,那也沒有問題,就算剛好一個在吊車尾、一個在落選頭,那也還是有結果產生。

我後來發現還有一個更快速、好用的方法

不過我後來想到一個更好用的方法…直接叫 ChatGPT 幫我隨機抽出多名得獎者。

我只要把抽獎名單另存成 CSV 檔。

Numbers Excel 製作抽獎系統

使用 ChatGPT Plus 的 Data Analysis 功能。

Numbers Excel 製作抽獎系統

然後 ChatGPT 就會幫你隨機抽出 5 名獲獎的名單,這樣看起來快多了!

Numbers Excel 製作抽獎系統

我也有詳細問了一下 ChatGPT 他是用什麼原理生成這份獲獎名單,然後問他這個和我用 Numbers、Excel 函式的差別在哪裡,我就不解釋了,直接原文貼上來,有興趣的人可以看看。

ChatGPT 解釋如何在名單中隨機抽出得獎者

請問你使用的原理是什麼?

我使用的是一種稱為「隨機抽樣」的方法,具體步驟如下:

  1. 讀取數據:首先,我讀取了您提供的 CSV 文件,這個文件包含了參與抽獎的名單。
  2. 清理數據:接著,我移除了文件中不必要的列,僅保留了與抽獎相關的信息,例如參與者的編號和名字。
  3. 隨機選擇:最後,我利用了 Python 的 Pandas 庫中的sample函數來隨機選擇5名參與者。這個函數能夠確保每位參與者被抽中的機會是相等的,從而保證了抽獎的公平性。

此外,我在使用sample函數時指定了一個「隨機種子」(在這個案例中是1),這是為了確保每次執行代碼時都能得到相同的結果,方便重現和驗證。如果不設置隨機種子,每次執行抽獎時可能會得到不同的結果。

可以針對第三點的函數進一步解釋嗎?因為如果我是在 excel 中透過 rand() 函數給每一個參與者一個隨機的代號,可能會因為 rand() 函數產生的隨機數有重複的機會而造成不公正的現象

當然可以。讓我們深入了解一下我使用的sample函數以及您提到的Excel中的RAND()函數,並比較這兩種方法的公正性。

Pandas的sample函數

在 Python 的 Pandas 庫中,sample函數被用來從 DataFrame 中隨機選擇行。當您指定抽取數量時,它會保證每一行(在您的案例中是每一位參與者)被選中的概率是相等的。關鍵點在於:

  • 不重複:當使用sample函數時,除非特別指定,否則一個樣本(行)在抽取過程中不會被選中超過一次。這意味著沒有重複抽取的風險。
  • 隨機性:這種方法依賴於生成器產生的隨機數。在大多數情況下,這些生成器足夠好,可以產生均勻分佈的隨機數。
  • 隨機種子:設置隨機種子(如random_state)可以確保每次抽取的結果都是一致的,這對於重現結果很有幫助。

Excel 中的RAND()函數

Excel 的RAND()函數會生成一個介於0和1之間的隨機數。如果您為每位參與者生成一個隨機數並根據這個數字排序,則:

  • 可能的重複:理論上,有可能生成相同的隨機數,尤其是當參與者人數非常多時。但在實際操作中,這種可能性極低,並且可以通過簡單的檢查來解決重複的問題。
  • 均勻分佈RAND()函數生成的數字是均勻分佈的,這意味著每個數字被選中的機率是相等的。
  • 每次刷新改變:不同於 Pandas 的sample函數,Excel 中的RAND()函數每次工作表刷新時都會生成新的隨機數。這可能會導致抽取結果的不一致性,除非您在生成數字後立即將其轉換為靜態值。

如果你有 ChatGPT Plus 的話建議直接讓 ChatGPT 來做就好

最後給個總結,如果你沒有ChatGPT Plus 的帳號,又不想要使用外面的抽獎工具,那麼就可以上 Numbers 或 Excel 的 RAND() 函數,替每一筆資料創建一個幾乎不會重複的隨機值,然後針對這個隨機值做排序,取前幾名就是獲獎名單了。

那如果你有 ChatGPT Plus 就更方便了,使用 Data Analysis 功能,就可以直接讓 ChatGPT 利用 Pandas 的 sample 函數隨機選出中獎者。

延伸閱讀》

如果想知道更多關於 Apple 的消息、教學、小技巧或是科技新知,一定要點擊以下任一 LOGO,追蹤我們的 Facebook 粉絲團、加入官方 Line 帳號、訂閱 IG、YouTube 以及 Telegram。

加入LINE好友  追蹤FB粉絲團  追蹤 Instagram  訂閱 YouTube  訂閱 Telegram