可在 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 ❗️注意:领取的最后一个红包不要走随机算法,直接取剩余金额即可,不然会出现红包领不完的情况。 :::
