Java生成带权重的随机数
时间: 2023-07-18 12:04:10 浏览: 127
AHP.rar_AHP java
可以使用Java中的Random类和Math类来生成带权重的随机数。下面是一个简单的示例代码:
```java
import java.util.Random;
public class WeightedRandom {
public static void main(String[] args) {
int[] weights = {2, 3, 5}; // 权重数组
int[] values = {1, 2, 3}; // 对应的值数组
int sum = 0;
for (int weight : weights) {
sum += weight; // 求出权重的总和
}
Random rand = new Random();
int randomNum = rand.nextInt(sum); // 生成一个随机数,范围为[0, sum)
int i = 0;
for (; i < weights.length; i++) {
randomNum -= weights[i];
if (randomNum < 0) {
break;
}
}
int result = values[i]; // 根据生成的随机数对应到值数组中的一个值
System.out.println("随机数为:" + randomNum + ",对应的值为:" + result);
}
}
```
在上面的代码中,我们先定义了一个权重数组weights和一个对应的值数组values。然后,将权重数组中的所有元素相加,得到权重的总和sum。接着,生成一个随机数randomNum,范围为[0, sum)。最后,遍历权重数组,用生成的随机数依次减去每个权重,直到随机数小于0时,就找到了对应的值。在本例中,如果生成的随机数为0或1,对应的值为1;如果随机数为2、3或4,对应的值为2;如果随机数为5、6、7、8或9,对应的值为3。
阅读全文