這次帶給大家JS實作微信紅包隨機演算法(附程式碼),JS實作微信紅包隨機演算法的注意事項有哪些,以下就是實戰案例,一起來看一下。
我們假設有一個100元的紅包,要發給10個人。為了確保公平,演算法需要確保以下的原則:
每個人最少能搶到0.01元
每個人的機會平等
所有人的金額總和等於100元
#1.簡單的隨機函數實現
很多朋友的一般想法是:
第一步:從0-100隨機一個數,得到第一個紅包金額。
第二步:從0-剩餘金額隨機一個數,得到第二個紅包金額。
第三步:...
最後一步把剩餘的錢都給最後一個人。
以此類推,得到全部的10 個紅包。但不知道大家注意到沒有,這樣存在明顯的 不公平 。先搶的人比較有優勢,第一個人的隨機範圍是0-100,有可能得到較大的金額。而最後一個人的隨機範圍就會很小,如果第一個人搶到了90塊錢,那麼最後一個人就不可能有的到超過10塊錢的機會。我們用程式碼模擬一下這個過程:
測試結果如下:
細心的朋友會注意到,餘額的值不正確,這是JavaScript浮點數運算的已知問題。當然解決的方式很多,如果你有好的辦法歡迎你留言給我。
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
以上是JS實作微信紅包隨機演算法(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!