5

我有 N 个值(整数)。我想知道随机选择其中一个关于百分比的值的最优雅方法是什么。例如,对于 3 个值的示例:

  • 值 1 有 30% 的机会被选中
  • 值 2 有 12% 的机会被选中
  • 值 3 有 45% 的机会被选中

我需要这个用于我正在使用 Java 开发的程序,但是伪代码算法或任何其他语言的代码都可以。

4

2 回答 2

13

在不计算要使用的值的情况下执行此操作的一种方法是

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;
于 2012-10-01T12:07:29.167 回答
8

建议算法:

  • 在和之间生成一个随机数 ( n) (假设您的随机生成器分布良好)01
  • 如果n < 0.30返回值1
  • 如果n < 0.42返回值2
  • 否则如果n < 0.87返回值3
  • 否则打个招呼(你的数字加起来不是 100%)
于 2012-10-01T11:56:24.873 回答