js实现微信红包随机分配

680 阅读1分钟

今天在面试做笔试题的时候遇到这个问题,做一下记录

//total 总金额 ,num 个数
function redPacket(total,num) {
    let imp = 0;
    let imparr = [];
    let account = 0;
    for(let i=0;i<num;i++) {
        let ac = Number(parseInt((Math.random()*100).toString()));
        imparr.push(ac);
        imp += ac;
    }
    return imparr.map((item, index)=>{
        if(index===imparr.length - 1){
            return Math.round(total*100 - account)/100;
        }else{
            let lo = Number(parseInt((item/imp*total*100).toString())) / 100 || 0.01;
            account = account + lo*100;
            return lo
        }
    })
}
redPacket(10,5) // [0.58, 0.29, 0.36, 2.94, 5.83]