C#-------实现简单的双色球彩票生成器

首先,介绍一下双色球彩票规则:
一、投注方式
1、标准投注
从红球号码中选择6个号码,从蓝球号码中选择1个号码为一注,红球最多可选20个号码,蓝球最多可全选。单注最高奖金可达1000万元。

2、胆拖投注
在33个红球号码中选择1~5个号码作为每注都有的胆码,再补充其它不同的红球号码作为拖码进行投注,蓝球无胆码和拖码之分。单注最高奖金可达1000万元。

3、单式上传
将固定格式的单式号码统一上传给系统进行投注。此投注方式对于将过滤软件过滤出的单式号码统一投注十分方便。
二、设奖及中奖
奖级表:
奖级 中奖说明 单注奖金 (前面数字代表红球数量、后面数字代表篮球数量)
一等奖 中6+1 (红球和篮球中5个—四等奖)
二等奖 中6+0 (红球六个—二等奖)
三等奖 中5+1 (红球五个、篮球1个—三等奖)
四等奖 中5+0 中4+1 (红球和篮球中5个—四等奖)
五等奖 中4+0 中3+1 (红球和篮球中4个—五等奖)
六等奖 中2+1 中1+1 中0+1 (中一个篮球—六等奖)

C#实现:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace caipiaoshengchengqi
{
    class Program
    {
    private static int[] BuyTicket()
        {
            //前6个红球
            int[] ticket = new int[7];
            for (int i = 0; i < 6;)
            {
                Console.WriteLine("请输入第{0}个球的号码:", i + 1);
                int redNumber = int.Parse(Console.ReadLine());

                if (redNumber < 1 || redNumber > 33)
                    Console.WriteLine("购买的号码超出范围");
                else if (Array.IndexOf(ticket, redNumber) >= 0)
                    Console.WriteLine("号码已经存在");
                else
                    ticket[i++] = redNumber;


            }
            //第7个篮球
            while (true)
            {
                Console.WriteLine("请输入篮球号码");
                int blueNumber = int.Parse(Console.ReadLine());

                if (blueNumber >= 1 && blueNumber <= 16)
                {
                    ticket[6] = blueNumber;
                    break;
                }
                else
                    Console.WriteLine("号码超出范围");
            }
            return ticket;
        }

        static Random random = new Random();
        private static int[] CreatRandomTicket()
        {
            int[] ticket = new int[7];
            for(int i=0;i<6;)
            {
                int redNumber = random.Next(1, 33);

                if(Array.IndexOf(ticket,redNumber)<0)
                {
                    ticket[i++] = redNumber;
                }
                
            }
            ticket[6] = random.Next(1, 16);

            Array.Sort(ticket, 0, 6);
            return ticket;
        }

        private static int ticketEqual(int[] myTicket, int[] randomTicket)
        {
            //计算买的篮球数量与随机产生的篮球数量
            int blueCount = myTicket[6] == randomTicket[6] ? 1 : 0;
            int redCount = 0;


            for (int i = 0; i < 6; i++)
                if (Array.IndexOf(randomTicket, myTicket[i], 0, 6) >= 0)
                    redCount++;


            int level;
            if (blueCount + redCount == 7)
                level = 1;
            else if (redCount == 6)
                level = 2;
            else if (blueCount + redCount == 6)
                level = 3;
            else if (blueCount + redCount == 5)
                level = 4;
            else if (blueCount + redCount == 4)
                level = 5;
            else if (blueCount == 1)
                level = 6;
            else
                level = 0;

            return level;
        }


        private static void Main()
        {


            int level;
            int count = 0;
            int[] myTicket = BuyTicket();
            do
            {
                count++;
                int[] randomTicket = CreatRandomTicket();
                level = ticketEqual(myTicket, randomTicket);

                if (level != 0)
                    Console.WriteLine("恭喜,{0}等奖,累计消费:{1:c}", level, count);

            } while (level != 1);//如果不中一等奖就会一直循环----可以根据自己的需求去改



        }
    }
}

发布了8 篇原创文章 · 获赞 12 · 访问量 785

猜你喜欢

转载自blog.csdn.net/ZJ_____W/article/details/104235268