C#生成不重复的随机数组
1、基本思路
例如,我要在0~10中随机取出5个数,且这5个数不能重复,那基本思路就是:
(1)在一个数组A中保存0~10的数值,然后声明一个长度为5的数组B;
(2)每次在0~10的范围内随机生成一个数
(3)将步骤2获取的数值作为索引获取数组A的数值,并将该值赋给数组B,同时移除数组A中的该值
(4)训练5次,得到数组B
此时数组B中包含的就是5个不重复,且数值范围在0~10内的数组
2、代码实现
private int[] GetRandomArray(int number, int minNum, int maxNum) { List<int> randArray = new List<int>(); for (int i = minNum; i <= maxNum; i++) { randArray.Add(i); } int[] resultArray = new int[number]; var buffer = Guid.NewGuid().ToByteArray(); int seed = BitConverter.ToInt32(buffer, 0); var random = new Random(seed); for (int i = 0; i < number; i++) { var index = random.Next(0, randArray.Count); var rand = randArray[index]; resultArray[i] = rand; randArray.Remove(rand); } return resultArray; }

浙公网安备 33010602011771号