我想请教一下,就是我将每个事件赋予一定的权重,比如0.2,0.1,那么该如何写函数让事件随概率发生,或者各位大佬有其他方法实现随机事件嘛
随机一个1到10的整数,数字落在你权重的对应范围内那么发生对应的事件
那如果相同概率的事件呢
。。。举个例子事件1事件2分别占30%那么随机数可以这样处理当数字在1~3内那么执行事件1如果在4~5范围内那么执行事件2以此类推
懂了懂了,谢谢
/**
* 按指定几率随机返回数组内一个元素
* @param arr 数组
* @param chanceList 几率列表
*/
randomElementByChance<T>(arr: T[], chanceList: number[]): T {
if (!arr || arr.length == 0 || !chanceList || chanceList.length == 0) {
return null;
}
let chanceSum = chanceList.reduce((a, b) => a + b, 0);
let rnd = Math.random() * chanceSum;
for (let i = 0, len = chanceList.length; i < len; ++i) {
let chance = chanceList[i] || 0;
if (rnd < chance) {
return arr[i];
}
rnd -= chance;
}
return null;
}