彩票程序C#保存并比较列表中的中奖号码

2020-02-15 c# .net

我似乎在用C#编写彩票程序时碰到了死胡同,我正在寻找一些指针。我要尝试做的是让用户输入7个数字,这将是他们的彩票“票”,然后我要绘制一个或多个7位数字的中奖数字,并将其与用户的数字进行比较,看看他们有多少次正确了5次答案,6个正确答案等。这是我目前正在做的

while(a counter < the number of times I want to draw a winning number )
{
 add the users 7 numbers to a list

 add 7 random numbers to a list

 compare and see how many winnings

 track how many times 5 correct, 6 correct, etc

 loop until number of times I want to draw a winning number

}

这确实可行,但是如果我赢了10万次中奖号码,那么有些抽签会重复说,我不希望这样

这就是我想要做的

  1. 将用户7位数字添加到某种列表中(简单)

  2. 向列表中添加1000个(例如)独特的中奖批次(例如2、1、16、32、5、9、17可能是中奖者)

  3. 将用户的7个数字与1000个中奖号码进行比较,看看有多少次我得到了一定数量的正确数字

我可以得到一些有关如何实现此目标的指示或想法吗?也许我可以使用HashSet?因为它们只允许唯一的数字,但是由于我不7321114181923那样添加它们,所以我将如何将其添加到列表中,而是7 32 11 14 18 19 23

Answers

创建数组列表或整数列表:输入的数字和随机数

“将用户的7个号码添加到列表中〜 循环获取系统输入7次。

在列表中添加7个随机数〜 使用数学>随机将数字添加到列表

比较看看有多少钱〜 将列表中的每个数字与输入的列表进行数组比较。

追踪5次正确,6次正确的次数,以此类推〜 这是第二个柜台进来的地方

循环播放直到我想画一个中奖号码的次数〜 这可以通过另一个计数器进行跟踪

抱歉,为提供文字说明,您给了我文字,所以我给了您一些文字,您什么也没给我使用。

另外,您可以使用字符串操作功能在每个打印的数字上添加一个“”。

一种简单的方法是将中奖号码组合存储在一个列表中(作为单个中奖组合),然后您可以拥有一个列表列表,其中包含所有中奖组合。

同样,将用户的号码组合存储在列表中,然后您可以查看这些号码与中奖号码的匹配次数。

例如:

private static readonly Random Rnd = new Random();

// A helper function that returns a list of unique, random numbers from 1 to 49
private static List<int> GetRandomLotteryTicket()
{
    var possibilites = Enumerable.Range(1, 49).ToList();
    var ticket = new List<int>();

    for (int i = 0; i < 7; i++)
    {
        // Choose a random number from the possibilites
        var randomNumber = possibilites[Rnd.Next(possibilites.Count)];
        ticket.Add(randomNumber);
        // Then remove it so we don't select it a second time
        possibilites.Remove(randomNumber);
    }

    return ticket;
}

static void Main()
{
    // 5 random lottery tickets added as sample data
    var winningTickets = new List<List<int>>
    {
        GetRandomLotteryTicket(),
        GetRandomLotteryTicket(),
        GetRandomLotteryTicket(),
        GetRandomLotteryTicket(),
        GetRandomLotteryTicket()
    };

    // Normally you'd get this from the user, this is just sample data
    var userTicket = GetRandomLotteryTicket();

    Console.WriteLine($"Your numbers are: {string.Join("-", userTicket)}\n");

    foreach (var winningTicket in winningTickets)
    {
        var matchCount = winningTicket.Intersect(userTicket).Count();
        Console.WriteLine($"You matched {matchCount} numbers " + 
            $"with this ticket: {string.Join("-", winningTicket)}");
    }

    GetKeyFromUser("\nPress any key to exit...");
}

输出量

在此处输入图片说明

Related