楼主偶为你写了个:(实现了你想要的功能) 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多多 见谅 呵呵。 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; }调用 random(0,6,3);
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+" "); } } }
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(); } } }
恩,谢谢各位。这样来说吧: Random random = new Random(); random.nextInt(6);我这样进行三次,得到三个在0-6之间的随机数,但是这样简单的进行三次是会导致这三个随机数之间又重复的情况,我怎么样经过过简单的处理就能是他们不重复,而且我不需要保存前一个随机数,也就是说,java在api层面上有没有提供这样的功能?
做了一个 ,通过了测试. 应该可用.import java.util.*; public class Test{ public static void main(String[] args){ //生成 [0-n) 个不重复的随机数 //list 用来保存这些随机数 ArrayList list = new ArrayList();
int n = 10; Random rand = new Random(); boolean[] bool = new boolean[n];
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);
}
}
}
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;
}调用 random(0,6,3);
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+" ");
}
}
}
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();
}
}
}
恩,谢谢各位。这样来说吧:
Random random = new Random();
random.nextInt(6);我这样进行三次,得到三个在0-6之间的随机数,但是这样简单的进行三次是会导致这三个随机数之间又重复的情况,我怎么样经过过简单的处理就能是他们不重复,而且我不需要保存前一个随机数,也就是说,java在api层面上有没有提供这样的功能?
做了一个 ,通过了测试. 应该可用.import java.util.*;
public class Test{
public static void main(String[] args){
//生成 [0-n) 个不重复的随机数
//list 用来保存这些随机数
ArrayList list = new ArrayList();
int n = 10;
Random rand = new Random();
boolean[] bool = new boolean[n];
int num =0;
for (int i = 0; i<n; i++){
do{
//如果产生的数相同继续循环
num = rand.nextInt(n);
}while(bool[num]);
bool[num] =true;
list.add(num);
}
System.out.println (list);
}
}