每到年底,除了節慶大餐、聖誕樹,「聖誕交換禮物」也是很多人的共同回憶。你參加過的交換禮物活動,都是怎麼進行的呢?
記憶中,最簡單的應該是大家交出禮物、幫禮物編號(假設十個人好了,十個禮物 ① 到 ⑩ 號)、製作十個寫著號碼的小紙條當籤,然後大家抽籤獲取自己的禮物,差不多是這樣吧?
如果有人抽到自己送出的禮物怎麼辦呢?這時候可能要看遊戲規則或大家的臨場反應了,重抽、換禮物...... 對親密好友而言或許怎樣都是樂趣,但對不是那麼熟的職場同事可能就有點煩了,主辦人可能也會想避免這種情形。
最近看到一篇泛科學網站的文章 交換禮物抽法其實不公平?數學家教你絕不失敗的玩法,裡面詳細介紹了數學家的解決之道——畢竟,交換禮物 / 抽籤這種東西,離不開數學的排列組合啊!
文章裡介紹了一種利用錯位排序(derangement)的方式來抽交換禮物的方法,可以直接看文章中的教學。這是個一次就能抽成功的方法,實際抽的時候應該滿有效率的,但準備紙條、寫兩行內容、打亂紙條、剪開紙條、橫移下方紙條... 的前置準備還是有點繁瑣,有一點讓人擔心現場出亂子啊!
有沒有可能用同樣的原理,製作一個電腦版 / 手機版的交換禮物法呢?雖然少了一點做紙籤、看紙籤的樂趣,但主辦人少了一些控場的壓力。看電腦怎麼把禮物分配出來,把焦點放在大家都送了 / 拿了什麼怪禮物,也不見得不好玩。
之前我們曾用 Ragic 設計過一個抽籤/抽獎小工具——「抽籤小幫手」,主要是用於活動一次性的抽獎、一次性的尾牙抽獎等。我們發現,只要以「抽籤小幫手」的表單設計為基底,稍微修改一下,就可以做出上述「錯位排序」的交換禮物應用了。
這個修改過的版本我叫它「交換禮物小幫手」,我設計了一個「十個人交換禮物」的版本,把它放在公開的網頁上,大家可以在上面新增資料試玩看看:
玩的方法是:先在上面新增一筆資料,填上日期、活動資訊,以及參加者名字,在這個範本參加者必須是十人。填完之後,點一下「清空中籤資料」,再點一次「開始抽籤」,表單右方就會呈現出十組配對好的送禮人和收禮人,沒有重複。
也可以在手機上直接操作,沒有 Ragic 帳號的人可以安裝 Ragic App 之後,以訪客 guest 身份,掃表單上秀出來的 QR Code 進入資料庫:
在手機上一樣是新增資料和交換禮物成員後,點一次清空中籤資料按鈕、點一次開始抽籤,結果就會出來了。
一步步把前面講到的「錯位排序」紙本抽籤方法拆開來看的話,流程(以及轉化成 Ragic 表單邏輯的內容)大概如下:
① 每一位參與者分配一個所屬的編號(代表自己和自己送的禮物),這點在 Ragic 可以透過子表格資料設定序號達到,不過為了簡化結果,我們後面都是直接用收送禮者的名字來排序。
② 將寫好編號的紙條資訊遮起來、順序打亂:這步驟主要是要讓編號(參與者)可以依據某種隨機亂數來排序,因此在 Ragic 表單上我們改成先給予每個參與者一個隨機變數(RAND() 函數)並依照每個參與者拿到的亂數來排序他們,得出「交換禮物結果」區塊「送禮人」的隨機排序。
③ 將排好的紙條一一剪開,紙條下半部移動到後面,跟後面紙條的上半部搭配起來:這步驟主要是讓這個隨機組成的排序來決定禮物的配對,同時這種錯位移動方法可以保證不會有人配到自己的禮物。在 Ragic 表單上可以利用公式來確認這個配對,也就是用公式指定第 2 組收禮人 =第 1 組送禮人,第 3 組收禮人 = 第 2 組送禮人....一直到 第 1 組收禮人 = 第 10 組送禮人的組合。
各欄位的公式如下:
「開始抽籤」與「清空中籤資料」按鈕的邏輯和抽籤小幫手的動作按鈕設計邏輯相同,可參考這裡的說明。
從前面的說明可以看出,交換禮物的人數會影響到表單的設計,在設計時就要知道有多少人要交換禮物,才能設計出正確的送禮/收禮組合數,因此這個小工具比較不適合直接用我們做的範本,比較適合自己設計調整之後使用。
怎麼調整呢?如果你的交換禮物人數少於 10 人,例如是 8 個人的話,除了把「交換禮物結果」區塊減少兩行,變成只有 8 組之外,由於第一位收禮人要對應到的是最後一位送禮人,因此還要記得修改「1收禮人」的公式,改成「I9」。而如果交換禮物人數多於 10 人,例如是 15 個人的話,就要多新增五行資料,「1收禮人」的公式則應該改成「I16」。
今天的文章就分享到這裡,如果你看了還有疑問或建議,歡迎來信 support@ragic.com 跟我們說 :D