privateint[]Bingos=newint[]...{23,7,11,32,9,17};//中奖的号码组privateList<int[]>Tickets=newList<int[]>();//1000张废奖票privateList<int[]>BingoTickets=newList<int[]>();//200张有奖奖票/**////<summary>///判断是否出现Bingo的直线///</summary>///<returns>返回是否出现Bingo的直线</returns>privateboolIsBingoLine(int[]ALine)...{bool[]vExists=newbool[Bingos.Length];for(inti=0;i<ALine.Length;i++)for(intj=0;j<Bingos.Length;j++)if(ALine[i]==Bingos[j])...{vExists[i]=true;}for(inti=0;i<vExists.Length;i++)...{if(!vExists[i])returnfalse;}returntrue;}/**////<summary>///需要判断的+6+2条直线上的数字下标///</summary>privateint[,]bingoIndexs=newint[,]...{...{00,01,02,03,04,05},...{06,07,08,09,10,11},...{12,13,14,15,16,17},...{18,19,20,21,22,23},...{24,25,26,27,28,29},...{30,31,32,33,34,35},...{00,06,12,18,24,30},...{01,07,13,19,25,31},...{02,08,14,20,26,32},...{03,09,15,21,27,33},...{04,10,16,22,28,34},...{05,11,17,23,29,35},...{00,07,14,21,28,35},...{05,10,15,20,25,30},};/**////<summary>///判断奖票是否中奖///</summary>///<paramname="ATicket">奖票数字排列</param>///<returns>返回奖票是否中奖</returns>privateboolIsBingoTicket(int[]ATicket)...{for(inti=0;i<14;i++)...{int[]vLine=newint[6];for(intj=0;j<vLine.Length;j++)...{vLine[j]=ATicket[bingoIndexs[i,j]];}if(IsBingoLine(vLine))returntrue;}returnfalse;}/**////<summary>///判断奖票是否重复///</summary>///<paramname="ATicket">奖票数字排列</param>///<returns>返回奖票在列表中是否存在</returns>privateboolExistsTicket(int[]ATicket)...{for(inti=0;i<Tickets.Count;i++)...{boolvExists=true;for(intj=0;j<Tickets[i].Length;j++)...{if(Tickets[i][j]!=ATicket[j])...{vExists=false;break;}}if(vExists)returntrue;}returnfalse;}/**////<summary>///随机产生一个组奖票///</summary>///<returns>返回奖票数字排列的数组</returns>privateint[]RandomTicket()...{int[]vResult=newint[36];for(inti=1;i<=vResult.Length;i++)//顺序得到-36的数组...{vResult[i-1]=i;}RandomvRandom=newRandom();for(inti=0;i<vResult.Length;i++)//打乱顺序...{intj=vRandom.Next(vResult.Length-i);//随机抽取倒数i前面的数字intt=vResult[j];vResult[j]=vResult[vResult.Length-i-1];vResult[vResult.Length-i-1]=t;}returnvResult;}/**////<summary>///判断奖票是否重复///</summary>///<paramname="ATicket">奖票数字排列</param>///<returns>返回奖票在列表中是否存在</returns>privateboolExistsBingoTicket(int[]ATicket)...{for(inti=0;i<BingoTickets.Count;i++)...{boolvExists=true;for(intj=0;j<BingoTickets[i].Length;j++)...{if(BingoTickets[i][j]!=ATicket[j])...{vExists=false;break;}}if(vExists)returntrue;}returnfalse;}/**////<summary>///随机产生一张中将的奖票///</summary>///<returns>返回一张中将的奖票</returns>privateint[]RandomBingoTicket()...{int[]vResult=newint[36];//随机排列Bingos数组int[]vBingos=newint[Bingos.Length];Bingos.CopyTo(vBingos,0);RandomvRandom=newRandom();for(inti=0;i<vBingos.Length;i++)//打乱顺序...{intj=vRandom.Next(vBingos.Length-i);//随机抽取倒数i前面的数字intt=vBingos[j];vBingos[j]=vBingos[vBingos.Length-i-1];vBingos[vBingos.Length-i-1]=t;}intvIndex=vRandom.Next(14);//随机一条线上填上Bingos号码for(inti=0;i<6;i++)...{vResult[bingoIndexs[vIndex,i]]=vBingos[i];}List<int>vNumbers=newList<int>();for(inti=1;i<=36;i++)...{boolvExists=false;for(intj=0;j<Bingos.Length;j++)...{if(Bingos[j]==i)...{vExists=true;break;}}if(!vExists)vNumbers.Add(i);//添加Bingo号码之外的数字}for(inti=0;i<vResult.Length;i++)...{boolvExists=false;for(intj=0;j<6;j++)//如果这个位置已经被填值...{if(bingoIndexs[vIndex,j]==i)...{vExists=true;break;}}if(!vExists)...{intj=vRandom.Next(vNumbers.Count);//从余下的数字中抽取一个vResult[i]=vNumbers[j];vNumbers.RemoveAt(j);//移出}}returnvResult;}/**////<summary>///判断一个数是否是奖号中的数///</summary>///<paramname="ANumber">测试数值</param>///<returns>返回一个数是否是奖号中的数</returns>privateboolIsBingoNumber(intANumber)...{for(inti=0;i<Bingos.Length;i++)...{if(ANumber==Bingos[i])...{returntrue;}}returnfalse;}privatevoidbutton1_Click(objectsender,EventArgse)...{for(inti=0;i<1000;)//产生张废票...{int[]vTicket=RandomTicket();if(ExistsTicket(vTicket)||IsBingoTicket(vTicket))...{continue;}else...{Tickets.Add(vTicket);i++;}/**/////输出Console.WriteLine("------无奖-------");for(intj=0;j<vTicket.Length;j++)...{if(j%6==0)Console.WriteLine();if(IsBingoNumber(vTicket[j]))Console.Write("{0:00}*",vTicket[j]);elseConsole.Write("{0:00}",vTicket[j]);}Console.WriteLine();}for(inti=0;i<200;)//产生张有奖奖票...{int[]vBingoTicket=RandomBingoTicket();if(ExistsBingoTicket(vBingoTicket))...{continue;}else...{BingoTickets.Add(vBingoTicket);i++;}/**/////输出Console.WriteLine("-----有奖--------");for(intj=0;j<vBingoTicket.Length;j++)...{if(j%6==0)Console.WriteLine();if(IsBingoNumber(vBingoTicket[j]))Console.Write("{0:00}*",vBingoTicket[j]);elseConsole.Write("{0:00}",vBingoTicket[j]);}Console.WriteLine();}}