java产生不重复随机数【史上最直接】
①本程序分“包含0”和“不包含0”两种情形,可自由选择。
②当“数组长度”大于“不重复随机数个数”程序会自动退出。
③若想自定义修改不重复随机数范围,可在源代码自行修改。
import java.util.Random;
import java.util.Scanner;
public class CSDN_procut {
public static void main(String[] args) {
Random suiji = new Random();
Scanner input = new Scanner(System.in);
int kz;
System.out.print("你想生成的不重复随机数范围是?不重复随机数范围包含0请按4,不重复随机数范围不包含0请按6");
int xz=input.nextInt();
switch (xz)
{
case 4:
{
System.out.println("好的,你已经选择包含0");
System.out.println("你想产生的不重复随机数范围是0到多少?请输入");
kz=input.nextInt();
int leng = 0;
System.out.println("请输入数组长度");
leng = input.nextInt();
int[] array;
array = new int[leng];
if(array.length>kz+1)
{
System.out.println("数组长度大于随机数个数,会有重复的,请保证数组长度小于等于随机数个数");
break;
}
int i=0;
int k=0;
int t=0;
int j=0;
for(;i<leng;++i)
{
if(k==0)
{
array[i]=suiji.nextInt(kz+1);
k=k+1;
}
else
{
t=suiji.nextInt(kz+1);
for(j=0;j<k;++j)
{
if(array[j]==t)
{
j=-1;
t=suiji.nextInt(kz+1);
continue;
}
}
array[j]=t;
++k;
}
}
System.out.println();
System.out.println();
for(int kk=0;kk<array.length;++kk)
{
System.out.println("第"+(kk+1)+"个数据是:"+array[kk]);
}
break;
}
case 6:
{
System.out.println("好的,你已经选择不包含0");
System.out.println("你想产生的不重复随机数范围是1到多少?请输入");
kz=input.nextInt();
int leng = 0;
System.out.println("请输入数组长度");
leng = input.nextInt();
int[] array;
array = new int[leng];
if(array.length>kz)
{
System.out.println("数组长度大于随机数个数,会有重复的,请保证数组长度小于等于随机数个数");
break;
}
int i=0;
int k=0;
int t=0;
int j=0;
for(;i<leng;++i)
{
if(k==0)
{
array[i]=suiji.nextInt(kz)+1;
k=k+1;
}
else
{
t=suiji.nextInt(kz)+1;
for(j=0;j<k;++j)
{
if(array[j]==t)
{
j=-1;
t=suiji.nextInt(kz)+1;
continue;
}
}
array[j]=t;
++k;
}
}
System.out.println();
System.out.println();
for(int kk=0;kk<array.length;++kk)
{
System.out.println("第"+(kk+1)+"个数据是:"+array[kk]);
}
break;
}
default:
{
System.out.println("输入有误,请重新输入");
break;
}
}
}
}