昨天開年會的時候看到一個段子說唯品會年會抽獎,結果大獎都被寫抽獎程序的部門得了,CTO現場review代碼。 簡單想了一下抽獎程序的實現,花了十幾分鍾寫了一下,主要用到的知識有數組添加刪除,以及ES5 數組新增的indexOf,filter方法, 為了刷新頁面后仍能保存已中獎記錄,用了 ...
昨天開年會的時候看到一個段子說唯品會年會抽獎,結果大獎都被寫抽獎程序的部門得了,CTO現場review代碼。 簡單想了一下抽獎程序的實現,花了十幾分鍾寫了一下,主要用到的知識有數組添加刪除,以及ES5 數組新增的indexOf,filter方法, 為了刷新頁面后仍能保存已中獎記錄,用了 ...
下面提供兩種抽獎中獎率計算的算法 ,第一種是自己設計出來的 ,第二種是比較經典的。 最重要的一點 概率學: 基數越大越能體現出中獎率。 比如扔10次硬幣 5次正面和5次反面的概率比較小, 但是扔100次 1000次 10000次時 得到50%正50%反的結果越來越明顯 方法 ...
...
當我們開發抽獎程序時,經常需要配置不同獎品的概率。 如:冰箱:30%,電腦:10%,洗衣機:50%。 可用以下函數實現: 這個函數首先將輸入數組,如[30,10,50]進行相加,求出總和作為概率分母。 再取0到總和之間的隨機數,再確定這個數是在哪個區間上。 從數組的前面 ...
不同概率的抽獎原理就是把0到*(比重總數)的區間分塊 分塊的依據是物品占整個的比重,再根據隨機數種子來產生1-* 中的某個數 判斷這個數是落在哪個區間上,區間對應的就是抽到的那個物品。 隨機數理論上是概率均等的,那么相應的區間所含數的多少就體現了抽獎物品概率的不同 ...
博客園參考文章 github參考源碼 ...
前段時間項目中開了一個轉盤抽獎的活動,轉盤抽獎是一個比較簡單的算法,下面介紹兩種實現 第一種實現 ### 第二種實現 ```python import random def random_pick(): lucky_spin_rewards = [ {"integral ...