1、输入一个概率,返回是否命中这个概率(bool)
public bool CheckProbability(float probability)
{
float randomValue = Random.Range(0f, 1f);
return randomValue <= probability;
}
2、输入一个随机概率列表(float),返回命中某一个概率的下标(int)
public int getListOddsNumber(List<float> probabilities)
{
float totalProbability = 0;//这个列表的总概率
foreach (var probability in probabilities)
{
totalProbability += probability;
}
// 生成随机数
float randomValue = UnityEngine.Random.Range(0f, totalProbability);
// 根据随机数在概率列表中找到对应的数值
float cumulativeProbability = 0;
int i = 0;
for ( ;i < probabilities.Count; i++)
{
// 概率不正确
if (randomValue >= cumulativeProbability && randomValue < cumulativeProbability + probabilities[i])
{
break;
}
cumulativeProbability += probabilities[i];
}
return i;
}