C#实现带权随机数
根据权重获取一个随机数
最近在开发过程中遇到一个需要做带权随机的处理,做了一个小小的算法与大家一起分享,有更好的方法可以相互交流,话不多说代码如下。
public int GetWeightIndex(List<int> weight)
{
int weightAll = 0;
int addWeight = 0;
int randNum = 0;
foreach (int _weight in weight)
{
if (_weight < 0)
{
Debug.Log("随机出错");
return 0;
}
weightAll += _weight;
}
randNum = Random.Range(1, weightAll+1);
for (int i = 0; i < weight.Count; i++)
{
addWeight += weight[i];
if (randNum <= addWeight)
{
return i+1;//与未得到随机数的结果区分
}
}
return 0;
}