双色球机选算法java实现

一、代码

package com.hdwang;

import java.util.Random;

/**
 * Created by admin on 2017/1/10.
 * 双色球机选实现
 */
public class Ssq {

    public static void main(String[] args) {

        int arrayNums = 5; //机选5组
        for(int i=0;i<arrayNums;i++){
            String hm = getYZHM();
            System.out.println(hm);
        }
    }

    /**
     * 产生一组双色球选号
     * @return 一注号码
     */
    private static String getYZHM(){
       //33选6
        int[] exist = new int[6]; //默认全0
        for(int i=0;i<6;i++){
            int ball = getABall(33,exist);
            exist[i] = ball; //暂存已选的球
        }
        sort(exist); //排序
        //16选1
        int specialBall = getABall(16,null);

        //拼接字符串
        String hm = "";
        for(int i=0;i<6;i++){
            String num = exist[i] < 10 ? "0"+exist[i] : ""+ exist[i];
            if(i==0){
                hm+= num;
            }else{
                hm+= ","+ num;
            }
        }
        hm += "\t"+(specialBall<10? "0"+specialBall:""+specialBall);
        return hm;
    }

    /**
     * 摇出一个号码
     * @param total 球总数
     * @param exist 已经选出的球
     * @return 一个新号码
     */
    private static int getABall(int total,int[] exist){
        Random random = new Random();
        int ball = random.nextInt(total)+1;
        while(true){
            if(contains(exist,ball)){
                ball = random.nextInt(total)+1;
            }else{
                break; //取到了新球,结束
            }
        }
        return ball;
    }

    /**
     * 判断数组是否包含某个元素
     * @param array 数组
     * @param value 元素
     * @return 是否存在
     */
    private static boolean contains(int[] array,int value){
        boolean c = false;
        if(array == null){
            return false;
        }
        for(int i=0;i<array.length;i++){
            if(array[i] == value){
                c = true;
                break;
            }
        }
        return c;
    }

    /**
     * 排序
     * @param array 数组
     */
    private static void sort(int[] array){
        for(int i=0;i< array.length-1;i++){ //比多少次
            for(int j= i+1;j<array.length;j++){ //每次循环,将最小数提前
                if(array[i]>array[j]){ //小数冒泡
                    int tmp = array[i];
                    array[i] = array[j];
                    array[j] = tmp;
                }
            }
        }
    }
}

二、结果

07,09,12,21,28,32 14
13,18,19,27,31,32 12
01,02,05,16,19,25 14
01,04,06,19,23,33 16
09,10,11,16,28,33 10

时间: 2024-08-05 08:12:11

双色球机选算法java实现的相关文章

PHP实现简单的双色球机选号码

<?php header('Content-Type: text/html; charset=utf-8'); //PHP实现双色球机选号码 $red = range(1, 33);//初次设定红球号码 //用函数array_rand随机选取6个红色号码 $red1 = array_rand($red,6); /*由于array_rand的返回值是数组的索引, 所以需要遍历此索引数组取出每个索引所对应的红球号码, 然后组成新的6个红号数组*/ $eRed = array(); for ($i=0

小程序:彩票机选神器 !

1 package com.lixu.caipiao; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.view.View.OnClickListener; 7 import android.widget.Button; 8 import android.widget.EditText; 9 10 public class MainA

例题:把机选双色球做成函数题。public定义函数,可以定义多种类型,也可以定义集合,学习函数题多一种方法。

public ArrayList jixuanqiu(ArrayList red)   //定义一个集合类型的函数 { Random r = new Random();  //机选6个红球的过程并排序 while (true) { if (red.Count == 6) { break; } else { int temp = r.Next(1, 34); if (!red.Contains(temp)) { red.Add(temp); } } } red.Sort(); return red

彩票机选器

今天用python写了个彩票机选器,功能很简单,仅供娱乐.还请大家来斧正! 下面是这个小程序的代码: #coding=utf8 n=15 i=1 m=range(1,n) import time from random import randint print '请选择彩票种类:1为双色球2为大乐透' print '请输入:', t=input() print '正在为你机选,请稍候.' time.sleep(1) print '以下为本次机选号码' if t==1:     while i<=

经典排序算法(Java实现)

以下程序均将数据封装于DataWrap数据包装类中,如下所示: 1 //数据包装类 2 class DataWrap implements Comparable<DataWrap> 3 { 4 int data; 5 String flag; 6 public DataWrap(int data,String flag) 7 { 8 this.data = data; 9 this.flag = flag; 10 } 11 //重写compareTo方法 12 public int compa

python小游戏之彩票机选器二

今天又对这个小程序做了些修改,使其更贴近现实,也更加人性化. 比如:当系统提示你选择彩票种类时,本来只有1和2两个选项,但你不小心输错了,怎么办呢?没关系,它会提示你重新输入1和2.说了这么多,还是先上代码吧.各位可以一试为快! #coding=utf-8 n=34 m=range(0,n) import time from random import randint def chnum():     print '请选择彩票种类:1为排列三,2为双色球'     print '请输入:',  

银行家算法java实现

关于银行家算法的理论知识,课本或者百度上有好多资料,我就不再多说了,这里把我最近写的银行家算法的实现带码贴出来. 由于这是我们的一个实验,对系统资源数和进程数都指定了,所以这里也将其指定了,其中系统资源数为3,进程数为5. import java.util.Scanner; import javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction; import javax.swing.text.StyledEditorKi

无向图的最短路径算法JAVA实现(转)

一,问题描述 给出一个无向图,指定无向图中某个顶点作为源点.求出图中所有顶点到源点的最短路径. 无向图的最短路径其实是源点到该顶点的最少边的数目. 本文假设图的信息保存在文件中,通过读取文件来构造图.文件内容的格式参考这篇文章第一部分. 二,算法实现思路 无向图的最短路径实现相对于带权的有向图最短路径实现要简单得多. 源点的最短路径距离为0,从源点开始,采用广度优先的顺序,首先将与源点邻接的顶点的路径求出,然后再依次求解图中其他顶点的最短路径. 由于顶点的最短路径的求解顺序 是一个 广度优先的顺

排序算法Java实现

排序算法Java实现 排序算法的分类: 内部排序,在排序过程中,全部记录放在内存中,称为内部排序: 外部排序,在排序过程中需要使用外部存储(磁盘),则称为外部排序. 主要介绍内部排序: 插入排序:直接插入排序.二分法插入排序.希尔排序 选择排序:简单选择排序.堆排序 交换排序:冒泡排序.快速排序 归并排序 基数排序 插入排序 直接插入排序 基本思想:对于给定的一组记录,初始时假设第一个记录自成一个有序序列,其余记录为无序序列.接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的