均匀分配奖池

问题描述 投票:0回答:1

所以我见过的最大帮助来自这个帖子:Distribute prizes for a tournament system

我已经阅读了其他一些但是由于它是一种语言或只是一些稍微难以理解的字母,它们对我没有任何帮助。

所以我的奖金值是例如482.17分布在45个参与者,我想要做的是以15%的间隔分配这个值。

从上一个帖子我已尽力翻译这个

int i;
int prizes[21];
int money=1000;
for(i = 1; i <= 20; i++){
    prizes[i] = (float) (15+(20-i)) / 100 * money;
    money -= prizes[i];
    fprintf(g,"%d) %d\n",i,prizes[i]);
}

到PHP,这是我在下面。

    $Points       = 482.17
    $countPlayers = 45;
    for ($i = 0; $i < $countPlayers; $i++) {
        /* Calculate Points */
        $reward = (float) (15 + ($countPlayers - $i)) / 100 * $Points;
        $Points -= $reward;

        echo $getPlayers[i] . " - " . $Points;
    }

所以通常15%的482.17应该是72.33,意思是第一名应该得到那个价值。但相反,它返回值164.26。虽然这个例子声称这样做了30%,但482.17的30%甚至是144.65

php algorithm math
1个回答
0
投票

我认为这符合你的要求。

<?php
$countPlayers =45;
$prizes[$countPlayers];
$money=482.17;
for($i = 1; $i <= $countPlayers; $i++){
    // Take 15% of the remaining pot each time
    $prizes[$i] = ($money * 15.0)/100.0;
    $money -= $prizes[$i];
    echo $i.")".number_format($prizes[$i],2,'.','')."\n";
}
?>
© www.soinside.com 2019 - 2024. All rights reserved.