Avoiding random duplicates

后端 未结 9 1059
情深已故
情深已故 2020-12-03 19:52
System.Random generator = new Random(DateTime.Now.Millisecond);
int[] lotteryNumber = new int[7];

Console.WriteLine(\"Your lottery numbers: \");
for (int i = 0; i&l         


        
9条回答
  •  南笙
    南笙 (楼主)
    2020-12-03 20:08

    If you're trying to pick numbers from a range without repetitions, you need to create an array of all the possible numbers and then "shuffle" a random selection out:

    int[] allPossibleNumbers = Enumerable.Range(1, 37).ToArray();
    int[] lotteryNumber = new int[7];
    for (int i = 0; i < 7; i++)
    {
        int index = r.Next(i, 37);
        lotteryNumber[i] = allPossibleNumbers[index];
        allPossibleNumbers[index] = allPossibleNumbers[i];
        // This step not necessary, but allows you to reuse allPossibleNumbers
        // rather than generating a fresh one every time.
        // allPossibleNumbers[i] = lotteryNumber[i];
    }
    

提交回复
热议问题