我现在有这样的需求:在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里.