Loading

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;
    }`
posted @ 2023-04-19 13:52  Dwaynerbing  阅读(1462)  评论(0编辑  收藏  举报