我想在 10% 的时间内随机选择“1”,在 30% 的时间内随机选择“2”,在其他 60% 的时间内随机选择“3”。我想知道是否有一种方法可以让我根据 Java 中的这些概率随机抽样。
谢谢
首先生成一个在 0.0 和 1.0 之间均匀分布的双精度值。然后将范围 (0.0 < x < 1.0) 拆分为对应于您所需概率的子范围:
在代码中:
double rand = rng.nextDouble();
if (rand < .1) {
return 1;
} else if (rand < .1 + .3) {
return 2;
} else {
return 3;
}
Run Code Online (Sandbox Code Playgroud)
(其中rng是 的一个实例java.util.Random。)
这种方法可以很容易地推广到任意一组目标概率。