两个方法

<script>
    const getRangeNumber = (num, avg, i) => {
        const max = Math.ceil(avg) * (i + 1)
        const randomNumber = Math.floor(Math.random() * avg)            
        return Math.ceil(max - randomNumber)
    }
    const getLastRangeNumber = (max, min) => {
        const a = Math.floor(Math.random() * (max - min))
        return max - a
    }
</script>

事件调用

let arr = [
        {id: 1, test: 6},  
        {id: 2, test: 4},  
        {id: 3, test: 5},
    ];  
    
    let num = 29;
    
    const list = []
    let blockNumber = 0
    arr.forEach(item => blockNumber += item.test)
    const avg = num / blockNumber
    const ceilAvg = Math.ceil(avg)
    const hasNumber = avg === ceilAvg
    debugger
    for(let i = 0; i < blockNumber; i++) {
        if(!hasNumber) {
            if(i >= blockNumber -1) {
                list.push(getLastRangeNumber(num, ceilAvg * i))
                break
            }
            list.push(getRangeNumber(num, avg, i))
        } else {
            list.push(getRangeNumber(num, avg, i))
        }
    }
    
    console.log(list);

月球上的蛋挞
1 声望0 粉丝