在最后几个应用程序中,我应该实现概率,这通常在一些项目中说:
在特定级别完成项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上遇到了几个问题但在我的案例中没有人帮助过我。
如果有更合适的方法,请告诉我
由于
答案 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个元素。例如,当元素总数非常大时,这可能很重要。