纯java原生态模拟双色球、大乐透规则进行出球,原理:比如双色球,红球33.蓝球16个,先进行红球出球计算,按照双色球出球的规则随机将33个球放入数组或集合中,规定一个出球的方向,随机数12个绑定33个数,比如规定6点钟方向出球,则随机数与绑定的随机数相等时则将随机数绑定的33个数中的那个数出去,完成出球,即2次随机数相等则出球。其中也加入了开始摇球是速度是很快的,但运行一段时间后减慢速度以便出球,这和双色球真实开奖出球差不多。
本人亲测,随便猜一组号码,猜中概率最好也得好几万次,最坏的情况就得几百万次。
有兴趣的小伙伴也可以直接弄个Android开发包,做个app,可以在手机上面玩。
不想自己写程序的小伙伴,可以访问:
https://www.uwanyi.com
郑重声明:此算法只供娱乐,不做实际参考。
import java.util.*;
/**
* 彩票算法
* Created by jesonking
* 双色球 6点钟方向出球
* 大乐透 12点方向
* 功能1:普通生成号码预测,并给出高频号码
* 1、参数:彩票类型,输出次数,高频红球输出个数,高频蓝球输出个数
* 功能2:根据当期开奖号码,预测下次号码。若最高100万次还未匹配到中奖号码则自动给出一组号码
* 2、参数:当期开奖号码,匹配次数:10000,100000,1000000
*/
public class CaipiaoCal {
public static void main(String[] args) {
printfCP(1,2000);
//printfCP(2,200);
//根据当前号码预测下一次号码
/* String currentCaipiao = "04,05,06,13,18,21";
//String currentCaipiao = "07,08,13,19,29,11,12";
String[] strs=currentCaipiao.split(",");
List list= Arrays.asList(strs);*/
/* String logcaipiao = getOneCPByLot(2,100);
System.out.println(logcaipiao);
logcaipiao = getOneCPByLot(1,100);*/
//System.out.println("双色球:"+nextCaipiao(logcaipiao,2,1000000) + ",高频彩票:" + logcaipiao);
//System.out.println("大乐透:"+nextCaipiao(currentCaipiao,2,100));
//nextCaipiao(logcaipiao.substring(1,logcaipiao.length()-1),1,1000000,6);
/*String currentCaipiao = "06,08,09,13,19,22,10";
nextCaipiao(currentCaipiao,1,500000,6);*/
//System.out.println(logcaipiao);
//getOftenAppearCaipiao(1,20,100000,6);
}
/**
* 通过高频数字组合获取一组号码,规则是
* 3,2,1. 前5个高频中选3个,前6到10中选2个,11-15以后的选一个
* 大乐透是3,1,1
* 蓝球:从前5个中选一个或者2个
* @param type 1:双色球 2:大乐透
* @param execTime 执行多少次,进行计算输出
* @return
*/
private static String getOneCPByLot(int type,int execTime){
List<String> resultList = new ArrayList<>();
int redNum = 33;
int blueNum = 16;
if(type == 2){
redNum = 35;
blueNum = 12;
}
Map<String,String> lotMap = printfCP(type,execTime,redNum,blueNum);
List<String> redList = new ArrayList<>();
String redStr = lotMap.get("redLotStr");
redStr = redStr.substring(1,redStr.length() -1);
String blueStr = lotMap.get("blueLotStr");
blueStr = blueStr.substring(1,blueStr.length() -1);
String[] redArr = redStr.split(",");
//获取前三个
List<Integer> list12 = getRandomNumList(3,0,5);
redList.add(redArr[list12.get(0)].trim());
redList.add(redArr[list12.get(1)].trim());
redList.add(redArr[list12.get(2)].trim());
//获取前2个或1个
List<Integer> list24 = null;
if(type == 1){
list24 = getRandomNumList(2,5,10);
redList.add(redArr[list24.get(0)].trim());
redList.add(redArr[list24.get(1)].trim());
}else{
list24 = getRandomNumList(1,5,10);
redList.add(redArr[list24.get(0)].trim());
}
//最后一个
List<Integer> list24Over = getRandomNumList(1,10,15);
redList.add(redArr[list24Over.get(0)].trim());
Collections.sort(redList);
resultList.addAll(redList);
//获取蓝球
List<String> blueList = new ArrayList<>();
String[] blueArr = blueStr.split(

1149

被折叠的 条评论
为什么被折叠?



