java 随机生成一个10位数 至少保证在多少次内不会重复? 20
既然是随机,就没有确定的次数
使用工具:MyEclipse 10
package Snsq;
import java.util.*;
public class java8 {
//随机数字(0~N)不重复的数字,过程及随机所需的次数。
public static void main(String[] args) {
Scanner in=new Scanner(System.in);//创建扫描仪
int k=in.nextInt();//接收扫描到的数据(数字类型)
Random rd=new Random();//创建随机机器
int [] a=new int [k];//给数组定义大小为k
int b=0,c=0,d=0;//创建三个数字类型变量以便运算
//b是累计循环次数,c是累计不重复个数,d是已给值数组a[]不重复的个数。
for(int j=0;j<=k*20;j++){//创建嵌套for循环,并定义循环次数为(20*k)
b++;
int y=rd.nextInt(k);//生成随机数(0~k)
for(int i=0;i<k;i++){
if(y!=a[i]){c++;}//每次随机出的数判断是否与数字a[]的每个值重复,是则c做累加,直到c==k
}
if(c==k){d++;a[d-1]=y;System.out.print(y+" ");}else{c=0;}//输出每一次随机到与数组a[]里不重复的数,累计不重复个数变量c变为初始值0。
if(d==k-1){break;}//已达到数组a[]里的值都不重复,并结束循环。
}
for(int i=0;i<k;i++){//用嵌套for循环将数组a[]进行冒泡排序从小到大
for(int j=0;j<k-1;j++){
if(a[j]>a[j+1]){d=a[j];a[j]=a[j+1];a[j+1]=d;}
}
}
System.out.println();
for(int i=0;i<k;i++){System.out.print(a[i]+" ");}//用for打印已排好序的数,以便验证是否都不重复
System.out.println();
System.out.println("一共随机"+b+"次");//输出结果
}
}
Random rd = new Random();
while (number.length() != 10) {
String rn = rd.nextInt(10) + "";
if (number.indexOf(rn) == -1)
number += rn;
}
System.out.println(number);
多次不重复
不会不重复啊这个。生成的多了肯定会重复的哦。
你生成多少啊?我试了几次不会重复