这是一个创建于 2828 天前的主题,其中的信息可能已经有所发展或是发生改变。
最近看到个疑似微信红包的算法
public static double getRandomMoney(LeftMoneyPackage _leftMoneyPackage) {
// remainSize 剩余的红包数量
// remainMoney 剩余的钱
if (_leftMoneyPackage.remainSize == 1) {
_leftMoneyPackage.remainSize--;
return (double) Math.round(_leftMoneyPackage.remainMoney * 100) / 100;
}
Random r = new Random();
double min = 0.01; //
double max = _leftMoneyPackage.remainMoney / _leftMoneyPackage.remainSize * 2;
double money = r.nextDouble() * max;
money = money <= min ? 0.01: money;
money = Math.floor(money * 100) / 100;
_leftMoneyPackage.remainSize--;
_leftMoneyPackage.remainMoney -= money;
return money;
}
}
代码很简洁 也能实现红包的功能,但是我发现第一个抢红包的会有个最大封顶值。。。有没有其他算法来实现均衡呢
|
|
1
a1310747 2017-03-22 18:14:55 +08:00
刚发的贴显示居然是一天前 是被降权了吗
|
|
|
2
SpicyCat 2017-03-22 19:14:12 +08:00
平分。。。
|