如何實現搶紅包演算法?

2022-06-28 06:09:06 字數 814 閱讀 2969

方法一:二倍均值法

public

static listdivideredpackage(integer totalamount, integer totalpeoplenum)

amountlist.add(restamount);

return

amountlist;

}

缺陷:除了最後一次,任何一次搶到的金額都不會超過人均金額的兩倍,並不是任意的隨機

方法二: 線段分割法

實現真正的隨機

思路:①,待分割的數為n,有m個人搶紅包,可以隨機插入m-1塊板,則能將n分成m份

②,將分好組的數進行排序,取出放到list中,則能隨機分成m個紅包

public

static

void line_cut(int money,int

people )

}collections.sort(team);

system.out.println(team);

for (int i = 0; i < team.size(); i++)

else}}

system.out.println(result);

//驗證分割後的數是否是輸入的總金額

optionalr =result.stream().reduce(integer::sum);

system.out.println(r.get());

}

推薦閱讀

微信搶紅包演算法實現

只討論金額隨機的情況,需要滿足規則 所有人搶到金額之和要等於紅包總金額1.每個人至少搶到一分錢1.要保證所有人搶到金額的機率相等方案一 每個人點進來領,金額隨機,隨機的上限是當前剩餘的紅包金額。每次搶到的金額 隨機區間 0,剩餘紅包金額 分析 這樣做的缺陷是越早領越有優勢,因為每次搶到的金額 隨機區...

C語言實現搶紅包演算法

1 演算法背景 大家知道,微信拼手氣紅包和普通紅包兩種。普通紅包每個人搶到的金額是固定的 總額的平均數 拼手氣紅包是隨機金額 每個人搶到的是隨機的,差別可能非常大,有的人搶到的是1分,有的搶到的可能是幾元 十幾元 幾十元 目前的搶紅包演算法只能輸入兩個引數,即總金額 總人數。2 演算法要求 現要求同...

Accessibility 實現搶紅包 一

好了。不想說那麼多廢話了。直接開始吧 進入正題!我英語不好,將就看吧。配置許可權 註冊你的accessinilityservice 這一步沒什麼要說的,注意許可權和meta data的配置 配置accessibility info accessibilityeventtypes 監聽的事件。acce...