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;
}`