/** * 随机数 * @param {number} max * @param {number} min * @return {number} */ export function getRandom(max: number, min?: number): number { min = min || 0 return Math.floor(Math.random() * (max - min) + min) } /** * 根据概率数组获取随机index * @since 1.0.0 * @param prob_array 概率数组 */ export function random_prob(prob_array: number[]): number { let total = 0 for (let _d of prob_array) { total += _d } prob_array = prob_array.map(o => o / total) // 获取随机数 let r = Math.random() // 对概率数组的处理 let s = prob_array .map((v, index) => { return { index: index, prob: v } }) .sort((a, b) => a.prob - b.prob) // 判断随机位置 let result = s.find(v => (r -= v.prob) <= 0) return result ? result.index : s.length - 1 }