可在 big.js 官网打开浏览器控制台进行调试。

    其中amountRemain、totalQuantity、receiveQuantity、min是变量,分别表示红包余额、可领取数量、已领取数量和领取金额的最小值。

    1. var amountRemain=11.1;
    2. var totalQuantity=100;
    3. var receiveQuantity=0;
    4. var min=0.1;
    5. var amountResult=[];
    6. var result=0;
    7. for(var i=0;i<totalQuantity-receiveQuantity;i++){
    8. var max= Big(amountRemain).div(Big(totalQuantity).minus(receiveQuantity)).times(1);
    9. var randomAmount;
    10. randomAmount = Number((Math.random() * max).toFixed(1));
    11. randomAmount = randomAmount <= min ? min : randomAmount;
    12. console.log(randomAmount);
    13. receiveQuantity=Big(receiveQuantity).plus(1);
    14. amountRemain=amountRemain-randomAmount;
    15. result=Big(result).plus(randomAmount);
    16. amountResult.push(randomAmount);
    17. }
    18. console.log('结果:',result.valueOf());
    19. console.log(amountResult);

    参考文章:https://www.zhihu.com/question/22625187/answer/85530416

    :::danger ❗️注意:领取的最后一个红包不要走随机算法,直接取剩余金额即可,不然会出现红包领不完的情况。 :::