我有 N 个值(整数)。我想知道随机选择其中一个关于百分比的值的最优雅方法是什么。例如,对于 3 个值的示例:
- 值 1 有 30% 的机会被选中
- 值 2 有 12% 的机会被选中
- 值 3 有 45% 的机会被选中
我需要这个用于我正在使用 Java 开发的程序,但是伪代码算法或任何其他语言的代码都可以。
我有 N 个值(整数)。我想知道随机选择其中一个关于百分比的值的最优雅方法是什么。例如,对于 3 个值的示例:
我需要这个用于我正在使用 Java 开发的程序,但是伪代码算法或任何其他语言的代码都可以。
在不计算要使用的值的情况下执行此操作的一种方法是
double d = Math.random() * 100;
if ((d -= 30) < 0) return 1;
if ((d -= 12) < 0) return 2;
if ((d -= 45) < 0) return 3;
return 4;
建议算法:
n
) (假设您的随机生成器分布良好)0
1
n < 0.30
返回值1
n < 0.42
返回值2
n < 0.87
返回值3