有这样一个需求,从一个给定的集合中随机取一个值。集合如下:
int[] seeds = { 1, 2, 3, 4, 5 };
要求:取得的值为1、2、3、4、5的概率分别为 5%、5%、5%、35%、50%
其实可以创建一个集合来模拟这个取值,如下:
List<int> seedList = new List<int>(18)
{
1,2,3,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5
};
声明的集合中,1、2、3分别占集合总量的5%,4的数量占集合总数的35%,5占集合总数的50%。
再生成一个随机数,使得生成的随机数作为集合的下标,取出集合中的值。
int temp = Random.Range(0, 18);
将temp的值作为集合seedList的索引,取出值,即可获得随机值。完整代码如下所示。
public int MakeRandom()
{ int[] seeds = { 1, 2, 3, 4, 5 };
List<int> seed = new List<int>(18)
{
1,2,3,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5
};
int temp = Random.Range(0, 18);
Debug.Log(seed[temp]);
return seed[temp];
}
欢迎访问我的公众号:分享一些Unity项目中遇到的一些知识,也会与C++数据结构和算法相关的知识分享。