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

2018-01-12 11:05:14来源:网络收集作者:纳米程序员人点击

分享

阿里云爆款

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


private int[] CreateRandomNumber () {
List nums = new List ();
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++数据结构和算法相关的知识分享。
从给定数字集合中随机取不重复的数字算法

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台