1. 程式人生 > >十分鐘開發一個抽獎工具,順便抽個獎

十分鐘開發一個抽獎工具,順便抽個獎

大概不少人都知道我做過知乎想法的一個抽獎軟體,你要是常年光顧知乎想法區域肯定看過別人拿我的想法抽獎軟體來抽獎的,整個抽獎的網站大概就是這樣子的,網站的框架是Flask,前端樣式主要用Bootstrap框架。

640?wxfrom=5&wx_lazy=1

抽獎的流程就是先用爬蟲採集待抽獎名單,然後用隨機函式直接抽取相應人數的中獎者。這當中有一個注意事項就是:正常的隨機函式只隨機取一個值,所以當我們要抽獎多位中獎使用者的時候,我們就需要多次隨機,這裡我們就需要在每一次隨機之後把已經中獎的名單去掉,避免下次隨機再隨機到。

其實這個整個流程的跟我每次送書的時候給大家從讚賞裡面隨機抽獎的流程是一樣的,比如說上一篇從讚賞裡面隨機抽50位送書的文章中。最後的結果是僅僅是安卓入口就有1000+位小夥伴給了我打賞,同時iOS端還有近800個讚賞。

640?wxfrom=5&wx_lazy=1

那麼我第一步要做的就是先把這些名字都用爬蟲採集出來,採集出來之後放在一個列表裡面,接著使用Python中的random模組進行隨機,random模組之下有一個sample可以用來隨機取出幾個值。假設我們有100個使用者編號從1到100,從中隨機抽取三位,如下編寫即可。同理我把可以從近2000的使用者暱稱中,隨機出50位使用者。

640

有了實現過程,只需要在套用在一個網站框架上就做成了一簡單的抽獎網站了。有些人可能有些摸不著頭腦,沒關係。我把知乎的那套抽獎網站給開源了,點選「閱讀原文」可以直接訪問到Github頁面,為了讓大家有些練手的機會,我特地在一些地方留了坑。

當然這只是一個簡單的抽獎系統,稍稍複雜一點你可以考慮一下:如果一個使用者多次讚賞怎麼辦?要求一個使用者的讚賞金額越大抽到的概率越大應該怎麼修改程式碼?如果要求在固定的時間開獎應該怎麼加程式碼?

最後用以上的原理順便在這裡公佈一下三月份的送書的中獎名單,因為參與的人數接近2000人,但是隻送出50本,所以能中獎的人數比例就很少了。希望沒中獎的小夥伴不要不開心,點選閱讀原文去學習一下開發抽獎工具吧。

晚霞昏黃、S.Kingsley、Log、Bertram、春華秋實、朱新奇、sh、落花時節又逢君、@octobercms-china、happy pig、劉俊傑、謝琳萱Index、範範123、今天你吃黃燜雞了嗎、苗my苗?、庭前飄雨風逍遙、福爾摩白、Pilgrim、屁斐、細思極恐、Yummy World、朱新奇、Beau、52赫茲的Alice、Orochimaru

小卡、鬧鬧、Mrdemons、青柚醬、的華、董澤深、lalala、逸群、xypbbb、李文娟、王洋洋、有閒階級、鄭夢莎、阮光耀、羅材、趙坤、艾文宇、小軍、黃貴宗、顏煒、馬翩翩、丁飛、王瑩、武漢貓咪、汪海松

640

請中獎的小夥伴抓緊在後臺聯系我,微信設定了一個規則:如果你24小時內不主動聯絡我,我也不能主動給你傳送訊息。所以請中獎的小夥伴主動在後臺留言哈,我會第一時間回覆你。

點選閱讀原文,學習抽獎工具原始碼。