前段時間做了一個筆試題,覺得很有意思,特此記錄下來。 題目如下 //題目:請編寫一個紅包隨機算法。需求為:給定一定的金額,一定的人數,保證每個人都能隨機獲得一定的金額。 //比如100元的紅包,10個人搶,每人分得一些金額。 //約束條件為,最佳手氣金額不能超過最大金額的90%,每人都有 ...
前段時間做了一個筆試題,覺得很有意思,特此記錄下來。 題目如下 //題目:請編寫一個紅包隨機算法。需求為:給定一定的金額,一定的人數,保證每個人都能隨機獲得一定的金額。 //比如100元的紅包,10個人搶,每人分得一些金額。 //約束條件為,最佳手氣金額不能超過最大金額的90%,每人都有 ...
name="totalMoney">總金額</param> /// ...
需要考慮幾個點: 紅包形成的隊列不應該是從小到大或者從大到小,需要有大小的隨機性。 紅包這種金錢類的需要用Decimal保證精確度。 考慮紅包分到每個人手上的最小的最大的情況。 下面是利用線段分割算法實現的分紅包, 比如把100元紅包,分給十個人 ...
發一個紅包,要讓若干人來搶,需要滿足哪些規則? 1、所有人搶到的金額等於總金額,不能超過,也不能少於。 2、每個人至少搶到大於0的金額; 3、保證每個人搶到金額的幾率相等。比如A 搶到10元的幾率是20,B,C搶到的金額為10的幾率也是20。 本題有金額限制,每個人的金額至少是10,所以不滿足 ...
...
場景: 生成10個隨機紅包, 獎池總金額10000, 最小500, 最大1000,獎池全部分配完。 分析: 第一想法簡單, 直接生成500-1000之間的隨機數,直接生成10個, 直接上代碼。這種寫法的問題在於最后一個金額生成的時候會出現問題,會有出現超過最大金額的可能性 ...
2017年1月14日 14:19:14 星期六 一, 整體設計 算法有很多種, 可以自行選擇, 主要的"架構" 是這樣的, 用redis decr()命令去限流, 用mysql去記錄各種需要的數據 二, 紅包算法 簡便起見, 紅包金額用整數表示, 假設每個紅包里邊有x個糖豆, 每個人最少 ...
public class hongbao { @Test public void testHongbao(){ hb(100, 100, 0.01);//金額,個數,最少值 } void hb(double total,int num,double min ...