您的位置:首页 > 编程语言 > C#

从给定数字集合中随机取不重复的数字算法

2018-01-11 21:21 288 查看
游戏开发过程中,会遇到比如:从给定的10个道具中随机生成三个给用户,要求生成的道具相互之间不重复。一般情况下,我们会将道具存储在一个集合中,然后生成一个随机数,使用生成的随机数作为集合的索引,从集合中取出对象,传递给实例化函数。这样做有一个缺点,生成的随机数是不定的,多次生成的随机数之间,可能会出现值重复,为了避免这种情况,使用下面的方法来生成随机数。

private int[] CreateRandomNumber () {
List<int> nums = new List<int> ();
for (int i = 1; i <= 5; i++) {
nums.Add (i);
}
for (int i = 0; i < 2; i++) {
int j = Random.Range (0, 4);
nums.Remove (nums[j]);
}
return nums.ToArray();
}


一、创建需要生成数字的种子库

二、生成一个随机值作为数组的索引,根据生成的索引访问数组

三、按照索引,将生成的随机值从数组中移除,返回剩余数组的值,即可得到三个不同的值

测试如下:

int[] temp = CreateRandomNumber ();

for (int i = 0; i < 3; i++)
{
Debug.Log (temp[i]);
}


欢迎访问我的公众号:分享一些Unity项目中遇到的一些知识,也会与C++数据结构和算法相关的知识分享。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C#
相关文章推荐