首先,介绍一下双色球彩票规则:
一、投注方式
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);//如果不中一等奖就会一直循环----可以根据自己的需求去改
}
}
}