前端时间,在贴吧上看到有人问关于双色球的问题;最近老听同事谈论买双色球的事,故想写一段代码,测试下中奖概率。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Chromosphere2 {
private static String choujiang(String content) {
// TODO Auto-generated method stub
// 双色球 :红色球号码 + 蓝色球号码
// 六个红色球和一个蓝色球号码
// 红色球号码从1~33中选择
// 蓝色球号码从1~16中选择
// 一等奖:七个号码相符(六个红色号码和一个蓝色球号码)(红色球号码顺序不限,下同)
// 二等奖:六个红色球号码相符;
// 三等奖:五个红色球号码和一个蓝色球号码相符;
// 四等奖:五个红色球号码,或者四个红色球号码和一个蓝色球号码相符;
// 五等奖:四个红色球号码;
// 六等奖:一个蓝色球号码相符;
// 例如:红色球号码 01 06 13 19 24 28 蓝色球号码 16
System.out.println("开始出奖");
// 定义双色球数组,大小为7
List<String> list_red2 = new ArrayList<String>();
int small=0;
int big=0;
ok:
for (int i = 0;; i++) { //红球
int aaa = (int) (Math.random() * 33+1);
String redValue = String.valueOf(aaa);
if(list_red2!=null&&list_red2.size()>0){
if(!list_red2.contains(redValue)){
if(aaa<=17){
if(small>=3){
continue;
}
small++;
}else{
if(big>=3){
continue;
}
big++;
}
if (aaa < 10) {
list_red2.add("0" + redValue);
} else {
list_red2.add(redValue);
}
}
}else{
if(aaa<=17){
small++;
}else{
big++;
}
if (aaa < 10) {
list_red2.add("0" + redValue);
} else {
list_red2.add(redValue);
}
}
if(list_red2!=null&&list_red2.size()>0){
if(list_red2.size()==6){
break ok;
}
}
}
//将list转数组
String[] red=new String[6];
for(int i=0;i<list_red2.size();i++){
red[i]=list_red2.get(i);
}
Arrays.sort(red);
System.out.println(red);
int blue = (int) (Math.random() * 16+1);
String blues = "";
if(blue<10){//蓝球
blues = "+0"+blue;
}else{
blues = "+"+blue;
}
// 打印双色球号码
List list =new ArrayList();
for (int i=0;i<red.length;i++) {
System.out.print(red[i]+" ");
list.add(red[i]);
}
System.out.println(" " + blues);
list.add(blues);
System.out.println(list);
//String content = "02,04,15,18,26,29,+08";
String[] str = content.split(",");
int count1 = 0;
int count2 = 0;
for(int i=0;i<str.length;i++){
if(i<6){
if(list.contains(str[i])){
count1++;
}
}else{
if(list.contains(str[i])){
count2++;
}
}
}
System.out.println(count1+"======="+count2);
if(count1==6&&count2==1){
System.out.println("恭喜!您中了一等奖");
return "一等奖";
}else if(count1==6&&count2==0){
System.out.println("恭喜!您中了二等奖");
return "二等奖";
}else if(count1==5&&count2==1){
System.out.println("恭喜!您中了三等奖");
return "三等奖";
}else if((count1==4&&count2==1)||(count1==5&&count2==0)){
System.out.println("恭喜!您中了四等奖");
return "四等奖";
}else if((count1==3&&count2==1)||(count1==4&&count2==0)){
System.out.println("恭喜!您中了五等奖");
return "五等奖";
}else if(count1<4&&count2==1){
System.out.println("恭喜!您中了六等奖");
return "六等奖";
}else{
System.out.println("很遗憾!没中奖");
return "没中奖";
}
}
public static void main(String[] args) throws IOException {
/*BufferedReader stdin =new BufferedReader(new InputStreamReader(System.in));
String str = stdin.readLine();
choujiang(str);*/
choujiang("03,10,16,18,27,29,+08");
}
}