System.Random generator = new Random(DateTime.Now.Millisecond);
int[] lotteryNumber = new int[7];
Console.WriteLine("Your lottery numbers: ");
for (int i = 0; i<7; i++)
{
lotteryNumber[i] = generator.Next(1, 37);
Console.Write("{0} ",lotteryNumber[i]);
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
我需要制作一个打印7个彩票号码的程序,但没有重复.上面的代码打印了(1-37)范围内的7个随机数,但重复了appaer.我需要一种方法来防止出现重复的数字.
Jon*_*eet 12
最简单的方法IMO将生成所有可能数字的序列(即1-37),对集合进行洗牌,然后获取前七个结果.
在Stack Overflow上搜索"Fisher-Yates shuffle C#"会找到很多例子.
实际上,您可以修改Fisher-Yates shuffle以在获取结果时产生结果,因此您可以编写一个方法,例如:
var numbers = Enumerable.Range(1, 37).Shuffle().Take(7).ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9524 次 |
| 最近记录: |