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; } } }}