检查c#中的重复项

时间:2017-04-19 18:24:59

标签: c# random numbers generator

我想检查我在shuffle方法中传递的数组是否有任何重复项。 我想生成一个大小为a.length的随机数。

问题在于我无法弄清楚如何检查数组是否有重复数据,如果确实如此,它会生成另一个数字,直到它与其余数字不同。

public int[] Shuffle(int[] a)
    {

        //check if the array has duplicates
        for (int i = 0; i < a.Length; i++)
        {
            int curValue = random.Next(a.Length);
            if(a.Contains(curValue))
            {
                curValue = random.Next(a.Length);
            }
            else
            {
                a[i] = curValue;
            }
        }

        for (int i = 0; i < a.Length; i++)
        {
            int r = random.Next(a.Length);
            int t = a[r];
            a[r] = a[i];
            a[i] = t;
        }

        return a;
    }

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

这是一个按照我的设想执行你所要求的功能。包括使用System.Linq来运行它。我根据你的文字去了,因为代码没有让我明白你的问题。如果您的意思不同,请澄清。

Enter x , y coordinates of first vertice!
3.4 5.6
Enter x , y coordinates of second vertice!
1.2 3.4
Enter x , y coordinates of third vertice!
1.8 9.8

 mAB 1.000000
 mAC 0.380952
 AB 0.000000
 AC 3.883298
 BC 6.371813
 Perimeter: 10.255111

正如我在笔记中所说,如果你保留一个整数数组并且只允许添加低于数组长度的新随机替换数,那么你需要一个从0到数组长度的所有数字的混洗数组

由于生成了newNumbers的新数组,您还需要检查新生成的数字是否不在该数组中。