双色球算法

来源:互联网 发布:win10视频桌面软件 编辑:程序博客网 时间:2024/04/30 09:28

前言

首先说明一下,博主是没有能力预测双色球的,只是看最近支付宝、京东等客户端均有随机选彩票(双色球)的功能,想着模拟实现一下这个随机选号的算法。

之前看到有人说博主比较乐观,都是咬牙坚持的,博主也各种屌死,各种幻想,例如中了双色球一等奖开着宝马去阿里写代码,哈哈,我还是挺喜欢写代码的。(ps:真蛋疼,大论文还没写完,在这里搞神马双色球啊)


双色球随机算法思路

最近我每周也会买一注双色球,玩了2期之后,知道红球是33选6,蓝球是16选1,因此中奖的概率为:1 / (C(6, 33) × C(1, 16)) = 1 / 17721088 。好久没搞概率了,这么简单的概率题目,应该没算错。

以33选6为例子,我们的算法只需要模拟如下的过程:

  1. 初始化数组,数组内容为:[1...33]
  2. 从数组下标1到33中随机选取一个下标,例如7,则交换下标为7和当前最后一位的数(即下标为32),将下标为7的数放入结果数组中
  3. 再从数组下标1到32中随机选取一个数,交换该数和倒数第二位数的位置
  4. ......
  5. 直到6个数均选出为止

至于Rondom类大家可以用java自带的Random类即可,提供一个种子,估计客户端都是用的时间戳,这里我也用时间戳,大家还可以考虑生日神马的。


双色球随机算法

import java.util.ArrayList;import java.util.Random;/** * 双色球随机算法类 *  * @author zhengyi.wzy *  */public class DoubleBall {    public static void main(String args[]) {        // 获取红球        ArrayList<Integer> redBalls = getBalls(1, 33, 6);        // 获取蓝球        ArrayList<Integer> buleBalls = getBalls(1, 16, 1);        // 打印输出        System.out.println("本期双色球中奖号码为:" + redBalls + ", " + buleBalls);    }    private static ArrayList<Integer> getBalls(int min, int max, int size) {        ArrayList<Integer> result = new ArrayList<Integer>();        ArrayList<Integer> stores = new ArrayList<Integer>();        for (int i = min; i <= max; i++) {            stores.add(i);        }        for (int i = 0; i < size; i++) {            int index = getRandomIndex(stores.size() - i);            result.add(stores.get(index));            swapNumbers(stores, index, stores.size() - i - 1);        }        return result;    }    private static int getRandomIndex(int max) {        Random random = new Random(System.currentTimeMillis());        return random.nextInt(max);    }    private static void swapNumbers(ArrayList<Integer> stores, int index, int last) {        int tmp = stores.get(index);        stores.set(index, stores.get(last));        stores.set(last, tmp);    }}


后记

实验了几组数据,还是能够很好的保持随机性的,哈哈,其实我也就是写不进论文去,然后突然想写个双色球的随机算法,大家平时还是要靠自己的坚持努力获取别人的认可,双色球这种东西有人说是一种低智商税,我感觉可以作为生活中的小调味剂,和女友一起买一注,然后讨论一下中大奖以后的生活,还是挺美好。当然了,买完了该加班加班,该写代码继续写代码,博主继续写论文去了。

对了,我这期买的号码就是用这个算法随机算出来的:

本期双色球中奖号码为:[22, 17, 23, 4, 12, 20], [9]

大家如果用这个算法中奖了,可别忘了请我吃顿饭哈。
1 0
原创粉丝点击