// 奖池总量
let pond = 1000
// 奖品配置 let prize
= [{ name: '01', prob: 0.17 }, { name: '02', prob: 0.05 }, { name: '03', prob: 0.5 }, { name: '04', prob: 0.05 }, { name: '05', prob: 0.03 }, { name: '06', prob: 0.02 }, { name: '07', prob: 0.08 }, { name: '08', prob: 0.04 }, { name: '09', prob: 0.06 }] let array = prize.map(item => { item.prob = item.prob * 100 return item }) // console.log(Math.floor((Math.random() * pond) + 1)) for (let i = 0; i < array.length; i++) { i > 0 ? array[i].prob = array[i].prob + array[i - 1].prob : array[i].prob = array[i].prob } // 返回抽奖结果 function lotteryResult(value) { for (let i = 0; i < array.length; i++) { if (i > 0) { if (value > array[i - 1].prob && value <= array[i].prob) return array[i].name } else { if (value > 0 && value <= array[i].prob) return array[i].name } } } let a1 = a2 = a3 = a4 = a5 = a6 = a7 = a8 = a9 = 0 for (let i = 0; i < 10000; i++) { switch (lotteryResult((Math.random() * pond) + 1)) { case '01': a1++; break; case '02': a2++; break; case '03': a3++; break; case '04': a4++; break; case '05': a5++; break; case '06': a6++; break; case '07': a7++; break; case '08': a8++; break; case '09': a9++; break; } } console.log(`01出现次数: ${a1} --- 概率: ${(a1 / 1000).toFixed(4) * 100}%`) console.log(`02出现次数: ${a2} --- 概率: ${(a2 / 1000).toFixed(4) * 100}%`) console.log(`03出现次数: ${a3} --- 概率: ${(a3 / 1000).toFixed(4) * 100}%`) console.log(`04出现次数: ${a4} --- 概率: ${(a4 / 1000).toFixed(4) * 100}%`) console.log(`05出现次数: ${a5} --- 概率: ${(a5 / 1000).toFixed(4) * 100}%`) console.log(`06出现次数: ${a6} --- 概率: ${(a6 / 1000).toFixed(4) * 100}%`) console.log(`07出现次数: ${a7} --- 概率: ${(a7 / 1000).toFixed(4) * 100}%`) console.log(`08出现次数: ${a8} --- 概率: ${(a8 / 1000).toFixed(4) * 100}%`) console.log(`09出现次数: ${a9} --- 概率: ${(a9 / 1000).toFixed(4) * 100}%`)