如何检查数组中的重复项
本文关键字:数组 何检查 检查 | 更新日期: 2023-09-27 17:54:21
如何将随机数存储到数组中,但仅当数组内没有重复数时?下面的代码仍然输入一个重复的数字。
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();
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);
}
这样,代码会一直生成一个数字,直到找到一个不在数组中的数字,赋值它,然后继续。
有很多方法可以"洗牌"一个数组,但希望这能澄清你在代码中遇到的问题
您真正想要的是将数字从1洗牌到9(至少这是您的示例所暗示的),然后取前6个元素。检查重复会增加不必要的不确定性,如果你有一个洗牌,真的不需要。
E。g取Fisher-Yates洗牌的公认答案,然后取lotto
的前6个元素。
然后看起来像这样:
lotto = Enumerable.Range(1,9)
.Shuffle()
.Take(6)
.ToArray();