最近在做一個類似微信紅包的 拼手氣紅包的算法實現(xiàn)。
需求:
客戶拋出一個想法 :他想在他的APP中加入類似微信紅包功能。
1.要求每個人都能領(lǐng)取紅包(不超過限定人數(shù))
2.所有領(lǐng)取到紅包的人加起來的金額一定要等于紅包的總金額
3.每個人領(lǐng)取到的紅包都是隨機的。
4.紅包數(shù)量最多為100個。最少為2個。(這是客戶的微調(diào) 希望最少2個包才能發(fā)起)
5.最低紅包金額為0.01请梢。
算法思想:
假設紅包金額為100元,發(fā)放n個紅包力穗,用戶為y毅弧,剩余紅包數(shù)量為x,剩余紅包總金額為g
當y=1時(第1個用戶)
n1紅包=100隨機數(shù)范圍?
g=100-n1
x=n-1
當y=2時(第2個用戶)
n2紅包=(g)隨機范圍
x=x-1
g=g-n2
當y=3時(第3個用戶)
n3紅包=(g)隨機范圍
x=x-1
g=g-n3
.......
當y=x時(最后一個紅包)
最后一個紅包金額=g