java实现取离散分布随机数
时间: 2023-07-18 08:19:06 浏览: 173
在 Java 中,可以使用 `java.util.Random` 类中的 `nextInt(int n)` 方法来生成服从离散分布的随机数。该方法返回一个 0(包含)到 n(不包含)之间的整数,即生成的随机数的取值范围为 [0, n-1]。
如果需要生成服从离散分布的随机数,需要先计算每个取值的概率,并将其按照概率转化成区间。然后,生成一个 0 到 1 之间的随机数,根据该随机数落在哪个区间来确定生成的随机数的取值。
下面是一个生成服从离散分布的随机数的示例代码:
```java
import java.util.Random;
public class DiscreteRandomNumberGenerator {
public static void main(String[] args) {
// 创建一个 Random 实例
Random random = new Random();
// 定义离散分布的各个取值和对应的概率
int[] values = {1, 2, 3, 4, 5};
double[] probabilities = {0.2, 0.3, 0.1, 0.2, 0.2};
// 将概率转化成区间
double[] intervals = new double[probabilities.length];
intervals[0] = probabilities[0];
for (int i = 1; i < probabilities.length; i++) {
intervals[i] = intervals[i - 1] + probabilities[i];
}
// 生成 10 个服从上述离散分布的随机数
for (int i = 0; i < 10; i++) {
double randomValue = random.nextDouble(); // 生成一个 0 到 1 之间的随机数
int index = 0;
while (randomValue > intervals[index]) {
index++;
}
int value = values[index];
System.out.println(value);
}
}
}
```
运行以上代码,可以得到 10 个服从给定离散分布的随机数。
阅读全文