无聊,自己做了个双色球例子,请各跟高手点评一下:public class Test {
/**
 * @param args
 */
public static void main(String[] args) {
Test test = new Test();
RandomT rt = new RandomT();
rt.run();
System.out.println("Bule Ball is : "+test.getBule());
}
Random ra = new Random();
public Set<String> getRad(){
int num = 0 ;
Set<String> set = new HashSet<String>();
while(true) {
num = ra.nextInt(32)+1;
set.add(num+"");
if(set.size() == 1){
System.out.print("第一个数是"+num+"\t");
}
if(set.size() == 2){
System.out.print("第二个数是"+num+"\t");
}
if(set.size() == 3){
System.out.print("第三个数是"+num+"\t");
}
if(set.size() == 4){
System.out.print("第四个数是"+num+"\t");
}
if(set.size() == 5){
System.out.print("第五个数是"+num+"\t");
}
if(set.size() == 6){
System.out.println("第六个数是"+num);
}
if(set.size() == 6){
break;
}
}
return set;
}
public int getBule(){
return ra.nextInt(16)+1;
}

}
class RandomT implements Runnable{ public void run()  {
Test t = new Test();
Set<String> set = t.getRad();
int count = 0;
int[] ranD = new int[6];//得到随机数
for(Iterator it = set.iterator();it.hasNext();) { 
int num = Integer.parseInt((String)it.next());
ranD[count] = num;
count++;
try{
Thread.sleep(1000);
}catch(Exception ex ){
ex.printStackTrace();
}

}

for( int i = 0 ; i < ranD.length ; i ++ ) {
for ( int j = 0 ; j < ranD.length-i-1 ; j ++ ){
if(ranD[j] > ranD[j+1]){
int temp = ranD[j] ; 
ranD[j] = ranD[j+1];
ranD[j+1] = temp ;
}
}
}
System.out.print("Red Ball is  : ");
for(int k = 0 ; k < ranD.length ; k ++) {
System.out.print(ranD[k]+"\t\t");
}
System.out.println();
}}

解决方案 »

  1.   

    红球的蓝球可以重复,红球之间不可以,所以我选红球的时候用到Set集合
      

  2.   

    虽然set可以避免重复的球添加进去 但是你的蓝球 每次随即数量都是32个随即出去的
    按道理来说 每选出去一个球 球的数量就会少一个 
    下一次随随即数的生成几率就是剩下的31个球中的一个代码挺成熟的 可是运算的逻辑是错误的吧?  
    我曾经面试过类似的题