解决双色球算法数字重复问题

brucecj1227 2006-03-28 02:46:10
代码如下:
Random r5 = new Random(System.currentTimeMillis());
String array[] = new String[6];
String strred = null;

for (int i = 0; i < 6; i++) {
strred = String.valueOf(r5.nextInt(33));

if(strred.equals("0")){
strred = String.valueOf(r5.nextInt(33));
}

array[i] = strred;


}

for(int j = 0; j<array.length; j++){
int min = j;
for(int k = j; k < array.length; k++) {
if (Integer.parseInt(array[k]) < Integer.parseInt(array[min])) {
min = k;
}
}

String tmp;
tmp = array[j];
array[j] = array[min];
array[min] = tmp;


if(array[j].length()==1){
array[j] = "0" + array[j];
String ss = array[j];
}
if(j!=5)
s.append(array[j] + ",");
else{
s.append(array[j]+" ");
}

}

望高手指教,如何才能解决数字重复问题
...全文
449 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sgdb 2006-03-29
  • 打赏
  • 举报
回复
没那么复杂,产生的数字放到set里就可以了,永远不可能重复
jrwx 2006-03-29
  • 打赏
  • 举报
回复
ArrayList<Integer> redAl = null;
ArrayList<Integer> blueAl = null;

redAl = new ArrayList<Integer>();
blueAl = new ArrayList<Integer>();
for (int i = 1; i < 34; i++) {
redAl.add(new Integer(i));
}
for (int i = 1; i < 17; i++) {
blueAl.add(new Integer(i));
}
Collections.shuffle(redAl);
Collections.shuffle(blueAl);

List<Integer> red = redAl.subList(0, 6);
Collections.sort(red);

for (int i = 0; i < 5; i++) {

if(red.get(i)<10){
System.out.print("0" + red.get(i) + ",");
}else{
System.out.print(red.get(i) + ",");
}
}

if(red.get(5)<10){
System.out.print("0" + red.get(5) + " ");
}else{
System.out.print(red.get(5) + " ");
}

if(blueAl.get(0)<10){
System.out.println("0" + blueAl.get(0));
}else{
System.out.println(blueAl.get(0));
}
}
brucecj1227 2006-03-29
  • 打赏
  • 举报
回复
请问有没有稍微简单一点的啊,而且最好是在我给出的代码基础上进行修改,谢谢
brucecj1227 2006-03-29
  • 打赏
  • 举报
回复
请问楼上的大虾,set是什么东西?
FabelYangf 2006-03-28
  • 打赏
  • 举报
回复
发财了哦!!
Camelh 2006-03-28
  • 打赏
  • 举报
回复
import java.util.*;
public class LotteryArray {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] Lottery=new int[33];
int n=Lottery.length;
int [] result=new int[6];//redBall
for(int i=0;i<Lottery.length;i++)
Lottery[i]=i+1;

for(int i=0;i<result.length;i++)
{
Random random=new Random();
int num=random.nextInt(n);
result[i]=Lottery[num];
Lottery[num]=Lottery[n-1];
n--;
}
Arrays.sort(result);
int blueBall=(new Random()).nextInt(16)+1;

for(int i=0;i<result.length;i++)
System.out.println(result[i]);
System.out.println(blueBall);

}

}
php双色球在线机选程序V1.0(支持复式机选) 运行环境: php5.0及以上 安装方法: 上传所有文件到服务器. 本人平生也经常购买福彩双色球,本人不相信所谓的规律,我只相信运气。 所以每次选号都是直接机选。后来时间长了,我觉得福彩的那个售票系统的机 选程序不够强大,应该也不是严格意义上的机选。所以决定用php写一个机选 的程序,于是自已起草了程序的基本需求如下: 分析双色球的玩法规则: 其实就是红色球和蓝色球组成的一组号码,红色球的 数字范围为1~33,蓝色球的范围为1~16,所以机选双色球的程序要考虑以下内容 : 1. 先机选出红色球部份,也就是在数字1~33之间,随机取6个数字,而且这6个 数字不能重复,最后对这6个数字进行从小到大进行排序。这时候,我们已经产 生了双色球红球部份的6个号码。当然,如果是复式机选,红球的个数则是 7~20个,所以如果是复式机选的话,红色球的个数根据具体的个数在1~33中产 生具体个数的红色号码. 2.然后再机选出蓝色球部份,也就是在数字1~16范围内,随机取1个数字.当然 如果是复式机选,则相应产生多个蓝色球,也就是在数字1~16范围内,产生多 个不重复的号码 3.组合机选出来的红色球和蓝色球的号码,合并后进行输出。这样一注双色球 就产生了。 程序的核心算法和原理: 1.机选的实现: 红色球部份,先将1~33这33个常数放在一个数组中,也就是这个数组中有33个 数组元素,然后将这个数组元素的排列,使用函数将其随机打乱,最后截取某 一段。 2.用户单式和复式的判断,以及用户注数的判断使用GET模式的URL传值进行赋 值。 本程序原是本人自用的程序,如果错误或BUG,请真指正。现将本程序进行开 放源代码,方便有需要有人进行使用和改进。 程序演示地址: http://www.12580.info/cp/ssq 程序的下载地址: 说明:如对CSS有造诣的同事,可以帮忙修改一下表单和网页样式,使其美观。

62,635

社区成员

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

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