当前位置: 代码迷 >> J2SE >> java生成不同的随机数解决思路
  详细解决方案

java生成不同的随机数解决思路

热度:114   发布时间:2016-04-24 01:28:18.0
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里.
  相关解决方案