/** 随机运行 */ export function randomRun(...funcs: [(...args: any[]) => any, number][]) { let totalProbability = 0 for (const item of funcs) { let [func, probability] = item totalProbability += probability } let runFunc = (...args: any[]) => { // 生成一个 0 到 1 之间的随机数 const randomNum = Math.random() // 根据随机数和每个函数的概率计算应该执行哪个函数 let currentProbability = 0 for (let i = 0; i < funcs.length; i++) { currentProbability += funcs[i][1] / totalProbability if (randomNum < currentProbability) { // 执行选中的函数 return funcs[i][0](...args) } } } return runFunc }