0

在最后的几个应用程序中,我应该实现概率,通常在某些项目中给出:

奖励某个级别完成项目的用户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 上遇到了几个问题,但没有一个对我有帮助。

如果有更合适的方法可以做到这一点,请告诉我

谢谢

4

2 回答 2

4

您可以简单地分配以下值:

$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);
}

希望这可以帮助。

于 2013-04-01T19:43:37.607 回答
0

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

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

但是,在数学中有一个术语最大公约数可以减少元素的数量。在此示例中,GCD 为 40,因此 A 为 2,B 为 1,您的数组大小将减少到 3 个元素。例如,当元素的总数非常大时,它可能很重要。

于 2013-04-01T19:37:52.253 回答