微信紅包內部的算法規則,每個人當前能搶到的金額,服從一個0.01到當前剩余均值兩倍的左開右閉區間的均勻分布
舉例說明: 假設有100元錢,分給10個人。那么第一個人獲得紅包大小怎么計算呢?100/10 = 10元。這是期望值。從0.01到20的區間中(其中20=10乘以2)隨機抽取一個數,就是第一個人獲得紅包的大小;
假設第一個人獲得了8元,那么剩下的92元平均分給9個人,這九個人平均獲得紅包大小為10.22元,那么第二個人的紅包大小均勻分布於0.01元到20.44元的區間中;
依次類推。算法保證最后一個人至少抽到0.01元
基於以上算法思想,這里用Java語言進行封裝實現(原創,轉載請注明出處)
1. 我們的紅包類封裝以下屬性
2. 紅包數據的有效性簡單校驗的方式;
兩個原子方法(明細數據和最后的計算最佳)
紅包算法,其實就這一點點代碼是真正的計算紅包金額
對外暴露被調用的方法
main()方法調用簡單測試
運行測試結果: 我是不是小氣了點 15個人分20塊
若想直接要該源代碼,請評論留下郵箱.