PHP три случайных победителя на основе шансов - PullRequest
0 голосов
/ 06 января 2019

Я создал систему бросков, которая будет выбирать случайный шанс на основе 3 шансов.

Мой код такой

function chance($input=array())
{
    echo 'The Max Value can be: '.(array_sum($input)*10).'<br>';
    $number=rand(0,array_sum($input)*10);
    echo 'Checking for: '.$number.'<br>';
    $starter=0;
    foreach($input as $key => $val)
    {
        $starter+=$val*10;
        echo 'Current value being tested against is: '.$starter.' which is '.$key.'<br>';
        if($number<=$starter)
        {
            $ret=$key;
            break;
        }

    }

    return 'Winner is '.$ret.'';
}

$array=array('black' => 15.30, 'brown' => 20.20, 'kitty' => 15.30, 'lala' => 15.20, 'popi' => 14.00, 'usher' => 20.00);

for($i=0;$i<3;$i++)
{
    echo chance($array).'<br><br>';
}

создаст вывод, подобный этому

The Max Value can be: 1000
Checking for: 797
Current value being tested against is: 153 which is black
Current value being tested against is: 355 which is brown
Current value being tested against is: 508 which is kitty
Current value being tested against is: 660 which is lala
Current value being tested against is: 800 which is popi
Winner is popi

The Max Value can be: 1000
Checking for: 219
Current value being tested against is: 153 which is black
Current value being tested against is: 355 which is brown
Winner is brown

The Max Value can be: 1000
Checking for: 709
Current value being tested against is: 153 which is black
Current value being tested against is: 355 which is brown
Current value being tested against is: 508 which is kitty
Current value being tested against is: 660 which is lala
Current value being tested against is: 800 which is popi
Winner is popi

Код работает отлично, но есть некоторые ошибки в победителях. В этом случае ПОПИ побеждает дважды. Я хочу получить 3 случайных победителя без повторения предыдущего победителя.

например, если пользователь POPI уже выиграл в первом броске, он не сможет выиграть снова в следующем броске. Таким образом, пользователь не может выиграть дважды в броске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...