上一篇文章写了,关于双色球机选实现原理的程序,并且增加了排除选功能,比彩票店更灵活,引得大部分喜欢买双色球的朋友的共鸣,没有看到上一篇文章的人,我在解释一下,什么是排除选?
什么是排除选?
排除选就是,把自己不喜欢的数字或者感觉这次不会中的数字挑出来,在剩下的数字里边机选,提高我们机选的效率,并提高一定的中奖率。
上一篇文章发布后,有很多朋友在下面评论想要源码,今天我们就把实现原理和源码分享一下。
第一步:定义相关变量,定义机选数量count,原始号码数组array,恢复号码数组arrayTemp,剔除号码数组removeTemp,也就是排除号码,我这里写了5,如果不需要的就写空{},
//机选数量
int count = 10;
//原始号码
int[] array = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33 };
//恢复号码
int[] arrayTemp = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33 };
//剔除号码
int[] removeTemp = new int[] {5};
第二步:原始号码和恢复号码都调用剔除方法,进行排除号码的剔除,定义红球数量number,因为我们红球有6个,所以这里就是6,定义一个随机数变量temp。
//原始号码调用剔除方法
array = removeArray(array, removeTemp);
//恢复号码调用剔除方法
arrayTemp = removeArray(arrayTemp, removeTemp);
//红球数量
int[] number = new int[6];
//随机数
int temp = 0;
第三步:进行机选,第一层循环是机选数量count,第二层循环是红球数量number,并在33个数字中选出来后,对number进行赋值,最终选出红球结果,
第四步:因为蓝球只有一个数,所以我们就直接用1-16的随机数进行机选,最后一行将最终结果打印。
//循环机选
for (int i = 0; i < count; i++) {
//红球循环
for (int j = 0; j < number.length; j++) {
temp = (int) (Math.random() * array.length);//随机的是数组的下标0~32
number[j] = array[temp];
array = removeInt(array, array[temp]);
}
//每次选出一组号码后,重新恢复
array = arrayTemp;
//输出一个蓝球随机数
int size = 15; // size 为几 则输出 1 到几 之间的随机数
//机选蓝球
int blueBill = (int) Math.round(Math.random()*size + 1);
//从小到大排序
for (int j = 0; j < number.length; j++) {
for (int k = j + 1; k < number.length; k++) {
if(number[j] > number[k]){
int tempNumber = number[j];
number[j] = number[k];
number[k] = tempNumber;
}
}
}
System.out.println("红球:"+ Arrays.toString(number)+" 蓝球:"+blueBill);
}
以上是机选双色球的源码分享,也希望买双色球的朋友都中大奖,觉得有用的朋友,可以点个关注,也欢迎评论探讨,或者有新的想法也可以在下方评论,我们一起用程序实现,用科技改变生活。
程序会一直完善下去,下期我们分享一个双色球红球的所有排列组合的程序,用数学计算,红球所有的排列有1107568种情况,像上下图这种情况,我们完全可以排除掉。
我们随便输一组测试一下结果,感兴趣的朋友可以给个关注,想要源码或者结果的可以点赞、评论,谢谢大家。