java中要使生成的随机数不重复可以将已经生成的随机数放入到数组中,每次生成随机数时与数组的内容比较是否相等,相等则重新生成,不相等则存入数组。
示例代码如下(生成10之内的4个不相等的整数):
public class Demo {public static void main(String[] args) {
int[] a = new int[]{-1,-1,-1,-1}//初始化数组
Random random = new Random()
int count = 0//记录有效的随机数个数
while(count < a.length){
boolean flag = true//用来标志的变量
int r = random.nextInt(10)
for(int i=0i<a.lengthi++){
if(r == a[i]){
flag = false
break
}
}
if(flag){
a[count] = r
System.out.println(r)
count++
}
}
}
}
其中的变量flag用来标志产生的随机数是否已经存在,默认值设置为true,表示不存在,flase表示该随机数已经存在。
首先,需要一个范围内的随机数,第二部判重,如果重复了就再次随机.假设我们需要一个m到n的随机数..
需要用到random函数随机一个从0到1的数.然后再乘m到n的范围,再加m
double i = Math.random() * (m - n) + m ---->生成随机数
判重..方法有很多种了..比如我们用一个Set来存放已经存在的..
Set<Double>set = new LinkedHashSet<>()
if (set.contains(i)) { 重复了,重新随机 }
else { 向set中添加: set.add(Double.valueOf(i))}
2017年8月28日 21:37:44