可在 big.js 官网打开浏览器控制台进行调试。
其中amountRemain、totalQuantity、receiveQuantity、min是变量,分别表示红包余额、可领取数量、已领取数量和领取金额的最小值。
var amountRemain=11.1;
var totalQuantity=100;
var receiveQuantity=0;
var min=0.1;
var amountResult=[];
var result=0;
for(var i=0;i<totalQuantity-receiveQuantity;i++){
var max= Big(amountRemain).div(Big(totalQuantity).minus(receiveQuantity)).times(1);
var randomAmount;
randomAmount = Number((Math.random() * max).toFixed(1));
randomAmount = randomAmount <= min ? min : randomAmount;
console.log(randomAmount);
receiveQuantity=Big(receiveQuantity).plus(1);
amountRemain=amountRemain-randomAmount;
result=Big(result).plus(randomAmount);
amountResult.push(randomAmount);
}
console.log('结果:',result.valueOf());
console.log(amountResult);
参考文章:https://www.zhihu.com/question/22625187/answer/85530416
:::danger ❗️注意:领取的最后一个红包不要走随机算法,直接取剩余金额即可,不然会出现红包领不完的情况。 :::