Avoiding random duplicates

后端 未结 9 1056
情深已故
情深已故 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:32

    The simplest approach IMO would be to generate a sequence of all the possible numbers (i.e. 1-37), shuffle the collection, then take the first seven results.

    Searching on Stack Overflow for "Fisher-Yates shuffle C#" will find lots of examples.

    In fact, you could modify the Fisher-Yates shuffle to yield results as you took them, so you could write a method such as:

    var numbers = Enumerable.Range(1, 37).Shuffle().Take(7).ToList();
    

提交回复
热议问题