2、获取一个整数范国中大于另一个整教的随机数 public int RandG(int a, int b){ Random r = new Random(): int t = r.nextint(b): if (t >a) return t; else{ RandG(a,b): return t:}} 问题 a. 该方法采用的什么算法: b。请指出代码中存在的问题
时间: 2024-04-13 17:30:27 浏览: 70
rand随机数算法
a. 该方法采用的是随机数生成器(Random)的nextInt方法来生成随机数。
b. 代码中存在以下问题:
1. 代码中的递归调用存在错误,递归调用应该是 `RandG(a, b)` 而不是 `RandG(a, b)`,代码中缺少了递归调用的终止条件,可能导致无限递归。
2. 缺少对输入参数的校验,没有检查参数 a 是否大于 b,可能导致生成的随机数不符合预期。
3. 随机数生成的范围不正确,应该使用 `nextInt(b - a) + a` 来生成大于 a 小于 b 的随机数,而不是使用 `nextInt(b)`。
以下是修正后的代码:
```java
public int RandG(int a, int b) {
Random r = new Random();
int t = r.nextInt(b - a) + a;
if (t > a)
return t;
else {
return RandG(a, b);
}
}
```
修正后的代码中,我们将随机数生成范围修改为 `(b - a)`,然后再加上 a,以确保生成的随机数大于 a 小于 b。同时,我们添加了终止条件,当生成的随机数大于 a 时直接返回,不再进行递归调用。
阅读全文