`
huobengle
  • 浏览: 863260 次
文章分类
社区版块
存档分类
最新评论

生成Bingo有奖和无奖奖票

 
阅读更多
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();
}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics