当前位置: 代码迷 >> J2SE >> 双色球算法——有有关问题
  详细解决方案

双色球算法——有有关问题

热度:48   发布时间:2016-04-24 01:06:38.0
双色球算法——有问题
DoubleDolor
Java code
import java.util.Random;import java.util.Set;import java.util.TreeSet;public class SSQ {    public static void main(String[] args) {        // 上期特等奖号码        int[] red = { 7, 13, 15, 17, 19, 24 };        int blue = 11;        Set<Integer> set1 = new TreeSet<Integer>();        Set<Integer> set = new TreeSet<Integer>();        Random random = new Random();        // 得到上期特等奖的数组        for (Integer a : red) {            set1.add(a);        }        // 随机产生预测红球        while (set.size() != 6) {            int randomValue = random.nextInt(33) + 1;            set.add(randomValue);        }        // 随机产生预测蓝球        int randomValue = random.nextInt(16) + 1;        String result = "红球:";        for (Integer i : set) {            result += i + " , ";        }        result += " 蓝球:" + randomValue;        System.out.println(result);    }}


我的想法:让随机产生的红球和蓝球比较,如果相同就停止,如果不同就继续产生随机数,直到相同,红球和蓝球必须是同一次产生的,不能等到产生蓝球(或红球)与上一期的中奖号码一样的时候,再去产生红球(或蓝球)

------解决方案--------------------
木能理解LZ的意思
红球和蓝球必须是同一次产生的,是一次随机产生一个红球和一个蓝球,还是一次产生6个红球一个蓝球?

是这样的意思吗?
Java code
public class SSQ {    public static void main(String[] args) {        // 上期特等奖号码        int[] red = { 7, 13, 15, 17, 19, 24 };        int blue = 11;        Set<Integer> set1 = new TreeSet<Integer>();        Set<Integer> set = new TreeSet<Integer>();        Random random = new Random();        // 得到上期特等奖的数组        for (Integer a : red) {            set1.add(a);        }        while (true) { //加个While循环            // 随机产生预测红球            while (set.size() != 6) {                int randomValue = random.nextInt(33) + 1;                set.add(randomValue);             }            // 随机产生预测蓝球            int randomValue = random.nextInt(16) + 1;            if (set.cotains(randomValue)) break; //如果红球有一个和蓝球相同则退出while循环            String result = "红球:";            for (Integer i : set) {                result += i + " , ";            }            result += " 蓝球:" + randomValue;            System.out.println(result);        }    }}
------解决方案--------------------
Java code
package com.sg;import java.util.Random;import java.util.Set;import java.util.TreeSet;public class SSQ {    public static void main(String[] args) {        // 上期特等奖号码        int[] red = { 7, 13, 15, 17, 19, 24 };        int blue = 11;        Set<Integer> set1 = new TreeSet<Integer>();                Random random = new Random();        // 得到上期特等奖的数组        for (Integer a : red) {            set1.add(a);        }        while(true) {            Set<Integer> set = new TreeSet<Integer>();                    // 随机产生预测红球            while (set.size() != 6) {                int randomValue = random.nextInt(33) + 1;                set.add(randomValue);            }            // 随机产生预测蓝球            int randomValue = random.nextInt(16) + 1;                StringBuffer result = new StringBuffer("红球:");            for (Integer i : set) {                result.append(i + " , ");            }            result.append(" 蓝球:" + randomValue);            // 默认会调用StringBuffer的toString()方法            System.out.println(result);                        // 判断新生成篮球和红球是否与上一期的篮球和红球相等            //:由于set不重复,所遇两个set集合如果大小相同且其中一个包含另外一个的全部内容,可以认定两个集合内容相同            if(randomValue == blue && (set.size() == set1.size() && set1.containsAll(set))) {                System.out.println("成功匹配!");                return;            }        }    }}
  相关解决方案