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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成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个不重复的随机数 参考技术A 随机数本身具有不确定性,所以出现四个相同数字也是有可能的 参考技术B 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],那么它并不是与前面的所有数不重复的充要条件,而这仅仅只是一个必要条件。

以上是关于生成4个随机的不同的数字。JAVA语言。 为啥会产生重复的数字?的主要内容,如果未能解决你的问题,请参考以下文章

java生成7个不同的随机数

c语言产生4位随机数

java 从0-16这17个数字中随机取出100个数,要求其中数字2出现4次,数字5出现7次,数字7出现5次,其他任意

怎样用c语言产生0-100随机数?求助高手

c语言产生4位随机数

用C语言写出一道关于随机数的编程题