今天在面试做笔试题的时候遇到这个问题,做一下记录
//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]