java怎么判断Math.random() * 9 + 1) * 100000多少次之后会再次出现重复
时间: 2024-03-01 15:51:07 浏览: 205
假设我们生成的随机数为x,我们可以使用一个HashSet来保存已经生成过的随机数,每次生成一个新的随机数时,判断是否已经在HashSet中出现过,如果出现过就说明出现了重复。具体的步骤如下:
1. 定义一个HashSet,用于保存已经生成过的随机数。
2. 定义一个变量count,用于记录生成的随机数的个数。
3. 循环生成随机数,每次生成一个新的随机数时,判断是否已经在HashSet中出现过,如果出现过就说明出现了重复,此时输出count的值并退出循环;如果没有出现过,就将这个随机数加入到HashSet中,并将count加1。
4. 如果循环次数超过了一个预定的最大值,仍然没有出现重复,就说明概率非常小,可以认为不会再出现重复了,此时输出一个提示信息并退出循环。
具体的Java代码实现如下:
```java
public static void findRepeatNumber() {
Set<Integer> set = new HashSet<>();
int count = 0;
int maxCount = 10000000; //最大循环次数
while (count < maxCount) {
double random = Math.random() * 9 + 1;
int number = (int)(random * 100000);
if (set.contains(number)) {
System.out.println("重复出现了,循环了" + count + "次");
break;
} else {
set.add(number);
count++;
}
}
if (count >= maxCount) {
System.out.println("循环了" + count + "次,仍然没有出现重复");
}
}
```
在这个实现中,我们每次生成的随机数是一个六位数,因此在这个范围内生成的随机数的可能性有很多,需要循环很多次才能出现重复。如果需要加快速度,可以缩小随机数的范围或者增加计算机的处理能力。
阅读全文