计算给定范围的概率

时间:2013-04-01 19:31:57

标签: php arrays probability

在最后几个应用程序中,我应该实现概率,这通常在一些项目中说:

在特定级别完成项X

上奖励用户

项目X可能是以下之一:

jug => probability 25
glass => probability 50
plate => probability 20
dish => probability 5

我通过创建一个数组并填充特定项目的概率来解决这个问题;对于上面的情况,我将有一个25 elements of jug, 50 glasses and so on.的数组。我终于shuffle {PHP}数组,并从中选择一个随机元素。

在另一个应用程序中,这些值总计超过100,所以我首先从该总数中计算出他们所尊重的百分比,然后使用上述逻辑。

只是想知道这是否是从这种结构中计算概率的正确方法?

我在SOF上遇到了几个问题但在我的案例中没有人帮助过我。

如果有更合适的方法,请告诉我

由于

2 个答案:

答案 0 :(得分:3)

您可以简单地指定以下值:

$jug = 25;
$glass = 25+50 = 75;
$plate = 75+20 = 95;
$dish = 95+5 = 100

然后获得100的随机值并确定其适合的位置,类似于下面的伪代码

$jug = 25;
$glass = 75;
$plate = 95;
$dish = 100;
$items = {"jug", "glass", "plate", "dish"};

$rand = random(100);  // Get a random number between 0 and 100

if ($rand < $jug) {
    return items(0);
} elseif ($rand < $glass) {
    return items(1);
} elseif ($rand < $plate) {
    return items(2);
} elseif ($rand < $dish) {
    return items(3);
}

希望这有帮助。

答案 1 :(得分:0)

我会以与您相同的方式执行此操作,但您不必计算百分比,您可以使用超过100个元素。

例如,如果A = 80且B = 40,则可以使用包含120个元素的数组。

然而,在数学中有一个术语greatest common divisor,你可以减少元素的数量。在这个例子中,GCD是40,因此A将是2而B将是1,并且您的数组大小将减少到3个元素。例如,当元素总数非常大时,这可能很重要。