双色球算法——有问题

horse_leo_zhcn 2012-05-03 02:13:10
DoubleDolor

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

}


我的想法:让随机产生的红球和蓝球比较,如果相同就停止,如果不同就继续产生随机数,直到相同,红球和蓝球必须是同一次产生的,不能等到产生蓝球(或红球)与上一期的中奖号码一样的时候,再去产生红球(或蓝球)
...全文
672 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Αμπάι. 2012-08-30
  • 打赏
  • 举报
回复
使用二分查找啥!
horse_leo_zhcn 2012-05-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

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[……
[/Quote]

set1.containsAll(set),是把里边的数据逐个进行比较

我希望的效果是:

比如上期开奖结果是:2,12,14,17,30,31 蓝球 9
我们随机产生的:2,15,17,18,28,29 蓝球 14

我希望的比较是:我们随机产生的第一位2跟上期开奖结果的第一位去比较,我们随机产生的第二位跟上期开奖结果的第二位去比较,以此类推!
夜子 2012-05-04
  • 打赏
  • 举报
回复
- - 貌似没读懂lz的意思
winnie825 2012-05-04
  • 打赏
  • 举报
回复

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

}



忘使用工具粘贴代码了。
winnie825 2012-05-04
  • 打赏
  • 举报
回复
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;
}
}
}

}


本地跑了10多分钟,木有结果,镂主有空跑完吧。
java_freshman01 2012-05-04
  • 打赏
  • 举报
回复
那你就慢慢循环吧。
horse_leo_zhcn 2012-05-04
  • 打赏
  • 举报
回复
我希望的比较是:我们随机产生的第一位跟上期开奖结果的第一位去比较,我们随机产生的第二位跟上期开奖结果的第二位去比较,以此类推!
Mourinho 2012-05-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
DoubleDolor

Java code

import java.util.Random;
import java.util.Set;
import java.util.TreeSet;

public class SSQ {

public static void main(String[] args) {
// 上期特等奖号码
……
[/Quote]
不明LZ何意
qybao 2012-05-03
  • 打赏
  • 举报
回复
木能理解LZ的意思
红球和蓝球必须是同一次产生的,是一次随机产生一个红球和一个蓝球,还是一次产生6个红球一个蓝球?

是这样的意思吗?
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);
}
}

}

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧