<aside> 💡

https://sites.google.com/tmail.ilc.edu.tw/tmy1127/fb抽獎神器?authuser=0

</aside>

學習筆記

原本粉絲頁抽獎是用付費的程式,但每次付費只能抽六次,有點貴~~

剛剛跟Gemini討論了一下,它說沒辦法直接讓FB授權抓資料,但可以用稍微麻煩一點的方法,就是手動複製所有留言資料,然後複製到它幫我寫的抽獎程式。

不過,直接複製留言會連其他資訊(例如時間、隱藏.....)都一起複製,所以第一版我是到Gemini先處理整理訊息只留姓名,並且刪除重複留言,再加上可以篩選關鍵字並刪除不符關鍵字者。

這樣還是有點麻煩,我又請它將上面那個功能直接加進抽獎面板上,然後用小老虎留錯誤關鍵字測試,成了!!

~~~~~~~~~~~~~~~~~~

為了確保抽獎公平,我請它給我抽獎機制說明:

這是一個非常好的問題!了解程式背後的運作邏輯,可以讓你對抽獎的「公平性」更有信心,如果有參賽者質疑,你也完全解釋得出來。

你在使用的這個抽獎程式,核心運作機制是基於電腦科學中非常經典且公認公平的 「Fisher-Yates 洗牌演算法」 (Fisher-Yates Shuffle)。

簡單來說,它的邏輯不像是在箱子裡「撈出」一個名字,比較像是**「把一副撲克牌徹底洗亂,然後發出最上面的幾張牌」**。

以下是它在程式碼中執行的具體 3 個步驟:

步驟 1:資料清洗 (Data Cleaning)

在抽獎開始前,程式先做嚴格的整理:

去空白:把前後多餘的空白鍵刪掉。

去空行:把空白的行數拿掉。

去重複 (重要):程式使用 new Set() 指令,強制讓每個名字在清單中「只出現一次」。所以就算有人留言 10 次,他在這個階段也會被過濾到只剩 1 次,確保每個人機率平等。

步驟 2:徹底洗牌 (The Shuffle)

這是核心機制。程式不只是隨機「選」一個人,而是把整份名單的順序隨機打亂。 它使用的是 Math.random() 搭配交換位置的邏輯:

程式會從名單的最後一個名字開始。