java算法实现预测双色球中奖号码

网友投稿 473 2023-07-25


java算法实现预测双色球中奖号码

双色球选号规则红球是1~33选6个,蓝球1~16选1个。

它有17721088种排列组合,

这个代码实现了如何将一组双色球号码 转换成第n个排列组合数字,

以及如何根据第n个排列组合数字生成一组双色球号码。

分析一下今年的中奖号码所隐含的排列组合序号,也许你会找到规律,

哈哈,或许你能用它算出下一次的中奖号码,赶快试试吧!

DoubleColorBall.java

import java.util.Arrays;

public class DoubleColorBall {

/**

* 根据双色球生成绝对序号(原理:排列组合算法)

* a b c d e f 是红球由小到大 g是蓝球

*/

public static final int getBallIndex(int a,int b,int c,int d,int e,int f,int g){

return (comp(33,6)-comp(34-a,6)+comp(33-a,5)-comp(34-b,5)

+comp(33-b,4)-comp(34-c,4)+comp(33-c,3)-comp(34-d,3)

+comp(33-d,2)-comp(34-e,2)+comp(33-e,1)-comp(33-f,1))*16+g;

}

/**

* 根据绝对序号生成双色球(原理:遍历所有组合)

* a b c d e f 是红球由小到大

*/

public static final String getBall(long ballIndex){

if(ballIndex>17721088)ballIndex=ballIndex%17721088;

int redIndex=(int) (ballIndex/16);

int count=0;

for(int a=1;a<29;a++)

for(int b=a+1;b<30;b++)

for(int c=b+1;c<31;c++)

for(int d=c+1;d<32;d++)

for(int e=d+1;e<33;e++)

for(int f=e+1;f<34;f++){//最多循环1107568次,即为红球组合数

count++;

if(redIndex==count){

return Arrays.toString(new int[]{a,b,c,d,e,f,1+((int)ballIndex-1)%16});

}

}

retdYSrcNgUurn null;

}

/**

* 计算组合数C(m,n)

*/

public static final int comp(int m, int n)

{

int sum=1;

for(int i=m;i>m-n;i--)sum=sum*i;

for(int i=n;i>1;i--)sum=sum/i;

return sum;

}

public static void main(String[] args) {

//11月29日开奖结果对应序号:

System.out.println(getBalldYSrcNgUIndex(6,20,28,29,30,31,12));//12964124

System.out.println(getBall(12964124));//[6, 20, 28, 29, 30, 31, 12]

//12月1日开奖结果对应序号:

System.out.println(getBallIndex(3,8,19,25,27,28,2));//7353378

System.out.println(getBall(7353378));//[3, 8, 19, 25, 27, 28, 2]

//12月3日开奖结果对应序号:

System.out.println(getBallIndex(13,17,19,20,22,25,11));//17009451

System.out.println(getBall(17009451));//[13, 17, 19, 20, 22, 25, 11]

System.out.println("预测下次开奖号码,赶快去买吧!");

System.out.println(getBall(System.nanoTime()));

}

}

另外附上java双色球复式号码,排列组合出所有单注号码

public class Test {

/**

* 双色球复式组合

* @param redBall 红球数组

* @param blueBall 篮球数组

* @return 产生的组合个数

*/

public static int getDoubleChromosphere(Integer [] redBall,int [] blueBall){

int count = 0;//产生的组合个数

List result = new LinkedList();;//产生的双色球组合

//外层循环控制篮球

for(int i = 0;i < blueBall.length;i++){

//控制红球

List redList = new LinkedList();

for(Integer j : redBall){

redList.add(j);

}

List orign = new LinkedList();

orign.addAll(redList);

for(int k = 0;k < redList.size();k++){

redList.remove(k);

result = redList;

//最后篮球的赋值

result.add(blueBall[i]);

//输出组合结果

System.out.print("红球为:\t");

for(int j = 0;j < result.size();j++){

if(6 == j){

System.out.println("篮球为:\t"+result.get(j));

break ;

}

System.out.print(result.get(j)+"\t");

}

System.out.println();

//清空redLisr,重新赋值

redList.clear();

redList.addAll(odYSrcNgUrign);

//组合数加一

count++;

}

}

return count;

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:使用Java的Spring框架编写第一个程序Hellow world
下一篇:浅析Java的Spring框架中IOC容器容器的应用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~