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);//如果不中一等奖就会一直循环----可以根据自己的需求去改



        }
    }
}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
php双色球在线机选程序V1.0(支持复式机选) 运行环境: php5.0及以上 安装方法: 上传所有文件到服务器. 本人平生也经常购买福彩双色球,本人不相信所谓的规律,我只相信运气。 所以每次选号都是直接机选。后来时间长了,我觉得福彩的那个售票系统的机 选程序不够强大,应该也不是严格意义上的机选。所以决定用php写一个机选 的程序,于是自已起草了程序的基本需求如下: 分析双色球的玩法规则: 其实就是红色球和蓝色球组成的一组号码,红色球的 数字范围为1~33,蓝色球的范围为1~16,所以机选双色球的程序要考虑以下内容 : 1. 先机选出红色球部份,也就是在数字1~33之间,随机取6个数字,而且这6个 数字不能重复,最后对这6个数字进行从小到大进行排序。这时候,我们已经产 生了双色球红球部份的6个号码。当然,如果是复式机选,红球的个数则是 7~20个,所以如果是复式机选的话,红色球的个数根据具体的个数在1~33中产 生具体个数的红色号码. 2.然后再机选出蓝色球部份,也就是在数字1~16范围内,随机取1个数字.当然 如果是复式机选,则相应产生多个蓝色球,也就是在数字1~16范围内,产生多 个不重复的号码 3.组合机选出来的红色球和蓝色球的号码,合并后进行输出。这样一注双色球 就产生了。 程序的核心算法和原理: 1.机选的实现: 红色球部份,先将1~33这33个常数放在一个数组中,也就是这个数组中有33个 数组元素,然后将这个数组元素的排列,使用函数将其随机打乱,最后截取某 一段。 2.用户单式和复式的判断,以及用户注数的判断使用GET模式的URL传值进行赋 值。 本程序原是本人自用的程序,如果错误或BUG,请真指正。现将本程序进行开 放源代码,方便有需要有人进行使用和改进。 程序演示地址: http://www.12580.info/cp/ssq 程序的下载地址: 说明:如对CSS有造诣的同事,可以帮忙修改一下表单和网页样式,使其美观。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值