C# 如何检查阵列中的重复项?

C# 如何检查阵列中的重复项?,c#,arrays,duplicates,C#,Arrays,Duplicates,如何将随机数存储到数组中,但前提是数组中没有重复数?我下面的代码仍然输入了一个重复的数字 Random rand = new Random(); int[] lotto = new int [6]; for (int i = 0; i < lotto.Length; i++) { int temp = rand.Next(1, 10); while (!(lotto.Conta

如何将随机数存储到数组中,但前提是数组中没有重复数?我下面的代码仍然输入了一个重复的数字

        Random rand = new Random();
        int[] lotto = new int [6];

        for (int i = 0; i < lotto.Length; i++)
        {
            int temp = rand.Next(1, 10);
            while (!(lotto.Contains(temp)))//While my lotto array doesn't contain a duplicate
            {
                lotto[i] = rand.Next(1, 10);//Add a new number into the array
            }
            Console.WriteLine(lotto[i]+1);
        }
Random rand=new Random();
整数[]乐透=新整数[6];
for(int i=0;i
您真正想要的是将数字从1洗牌到9(至少这是您的示例所暗示的),然后取前6个元素。检查重复项会增加不必要的不确定性,如果你有一个洗牌,实际上不需要这样做

例如,将此作为a,然后将
乐透的前6个元素作为

这将是这样的:

lotto = Enumerable.Range(1,9)
                  .Shuffle()
                  .Take(6)
                  .ToArray();
试试这个:

Random rand = new Random();
int[] lotto = new int[6];

for (int i = 0; i < lotto.Length; i++)
{
    int temp = rand.Next(1, 10);

    // Loop until array doesn't contain temp
    while (lotto.Contains(temp))
    {
        temp = rand.Next(1, 10);
    }

    lotto[i] = temp;
    Console.WriteLine(lotto[i] + 1);
}
Random rand=new Random();
整数[]乐透=新整数[6];
for(int i=0;i
这样,代码会不断生成一个数字,直到找到一个不在数组中的数字,分配它并继续


有很多方法可以“洗牌”数组,但希望这能解决您在代码中遇到的问题。

而不是lotto[i]=rand.Next(1,10);,do lotto[i]=临时;我仍然在我的输出中找到了两个1。哦,对不起!你是对的!没问题,很乐意帮忙。