日期:2014-05-20  浏览次数:20842 次

java生成不同的随机数

我现在有这样的需求:在0-6中随机生成三个数,在每次生成的三个数中,不能有重复的。
例如
可以生成这样的:1,2,3
但是不能生成这样的:1,2,2

请问这个怎么实现?

------解决方案--------------------
楼主偶为你写了个:(实现了你想要的功能)
import java.util.Random;

public class TestRandom {
public static void main(String[] args) {
Random random = new Random();//创建Random类型的对象
//用for循环生成6个数
for (int i = 1; i <= 6; i++) {
int k = random.nextInt();
int j = Math.abs(k % 7);//获得0-6之间的随机数
System.out.println(j);
}
}
}

------解决方案--------------------
bug多多 见谅 呵呵。
Java code

    boolean  isDup(int []random,int ran){
        for (int i = 0; i < random.length; i++) {
            if(random[i]==ran) return true;
        }
        return false;
    }
    public  int[] random(int start,int end,int len){
        int [] rst=new int[len];
        Arrays.fill(rst,start-1);
        Random r=new Random();
        for (int i = 0; i < rst.length; ) {
            int ran=r.nextInt(end-start+1)+start;
            
            if(!isDup(rst, ran)){
                rst[i++]=ran;
            }
        
        }
        return rst;
    }

------解决方案--------------------
import java.util.*; 
public class Test 


public static void main(String[] args) 

Set <Integer> mySet = new LinkedHashSet <Integer> (); 
while(mySet.size() <7) 

mySet.add((int)(Math.random()*40+1)); 

for(Integer i:mySet) 

System.out.print(i+" "); 


}
------解决方案--------------------
Java code

package com.test;
import java.util.*;
public class Test {
    public Test() {
        Random rd = new Random();        
        HashSet set = new HashSet();        
        while(true){
            int i= rd.nextInt(7);
            set.add(new Integer(i));
            if(set.size()==3){
                break;
            }
        }
        System.out.println("=====================================");
        Iterator iter = set.iterator();
        while (iter.hasNext()) {
            Integer item = (Integer) iter.next();
            System.out.println(item);
        }
        System.out.println("=====================================");
    }
    public static void main(String[] args) {
        //生成100次。都不重复
        for (int i = 0; i < 100; i++) {
            new Test();    
        }        
    }
}

------解决方案--------------------
先将0-6放到一个数组里。然后先随机取0-6中一个数i,然后用arr[i]取出该数。然后将最后的那位然后将arr[6]取出,放到arr[i]中,然后取0-5中的一个数i,依次类推。想随机取几个数都可以
------解决方案--------------------
把生成的对像放到SET里.