生成4个随机的不同的数字。JAVA语言。 为什么会产生重复的数字?

import java.util.Random;
public class GuessNumber {
public static void main(String []args){
Random r=new Random();
int n[]=new int[4];
for(int i=0;i<4;i++){
n[i]=r.nextInt(10);
for(int j=0;j<i;j++){
System.out.println(j);
if(n[j]!=n[i]){
if(j==i-1){
break;
}
}
else{
n[i]=r.nextInt(10);
System.out.println(j);
continue;
}
}
}
for(int j=0;j<4;j++){
System.out.print(n[j]);
}
}
}
import java.util.Random;
public class GuessNumber {
public static void main(String []args){
Random r=new Random();
int n[]=new int[4];
for(int i=0;i<4;i++){
n[i]=r.nextInt(10);
int j=0;
while(j<i){
if(n[i]!=n[j]){
j++;
}
else{
n[i]=r.nextInt(10);
j=0;
}

}
}
for(int j=0;j<4;j++){
System.out.print(n[j]);
}
}
}
我改好了。

当然会出现重复的了……既然是随机肯定会有重复值出现。你可以判断一下是否出现过这个值。或者直接把值放进set里面,然后在set的大小为4的时候结束循环,这样就能得到4个不重复的随机数
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-09-28
随机数本身具有不确定性,所以出现四个相同数字也是有可能的
第2个回答  2010-09-28
import java.util.Random;
public class GuessNumber {
public static void main(String []args){
Random r=new Random();
int n[]=new int[4];
for(int i=0;i<4;i++){
int Num=r.nextInt(10);
boolean isrep=false;
for(int k=0;k<i-1;k++){
if(n[k]==Num){//说明前面已经有了这个数,不能要
isrep=true;//表示这个数是重复的
break;
}
if(isrep==false){//说明Num不重复
//可以写进数组
n[i]=Num;
}else{//否则是重复的,必须重新产生Num
i--;//i--相当于外层for循环会重新执行一遍

}
}
for(int j=0;j<4;j++){
System.out.print(n[j]);
}
}
}

呵呵,就这么简单,我直接写的,并没有测试,但一定会OK的。

那么楼主的问题出现在那里呢?很明显就是在判断产生的这个数是否与前面的书重复失败了,因为产生的这个数不经要与它的前一个数不同,
而且必须与它前面的所有书都不同,所以判断条件应该是与它前面的所有数惊醒比较,都不同则可以。
所以楼主的判断条件 n[i]!=n[i-1],那么它并不是与前面的所有数不重复的充要条件,而这仅仅只是一个必要条件。
相似回答