Генератор перестановок PHP / Java Script - PullRequest
0 голосов
/ 30 августа 2018

У меня 13 футбольных матчей с возможными результатами Home Win, Draw, Away win. Для одной ставки необходимо предсказать все 13 игр. Я пытался сгенерировать скрипт, который мог бы математически вычислить все возможные комбинации ставок, количество возможных совпадений равно 3 ^ 13.

Пока что у меня есть это в PHP;

    $count  = 1;
    $total_rows     = 13;
    $total_level    = 13;
    $total_cols     = 3;
    $total_global   = 3;

    $active_rows    = 0;
    $active_cols    = 0;
    $active_levels  = 0;
    $active_global  = 0;

    $betArray   = array();

    $aciveChoice[$total_rows]   = 0;
    $globalChoice[$total_level] = 0;

    while($active_rows < $total_rows){
        while($active_cols < $total_cols){

            while($active_global < $total_global){
                while($active_levels < $total_level){
                    echo $active_rows.' - '.$active_levels.': Select:'.$active_cols.' - '.$active_global.'<br/>';
                    $active_levels++;
                }
                echo $count++.'<br /><br /><br />';
                $active_levels  = 0;
                $active_global++;                       
            }

            $active_global = 0;
            $active_cols++;
        }
        $active_cols    = 0;
        $active_rows++; 
        }   
    }

Мой сценарий не дает все возможные комбинации. Любые идеи о том, как справиться с этим, будут оценены.

1 Ответ

0 голосов
/ 30 августа 2018
$matches = 13;
$outcomes = 3;
$possibilities = $outcomes ** $matches;

for ($count = 0; $count < $possibilities; $count++) {
  echo str_pad(base_convert($count, 10, 3), $matches, '0', STR_PAD_LEFT)."\n";
}

Это напечатает количество 13-символьных строк с тремя различными возможностями для каждого символа. (Вам решать, как распределить значения; я бы, вероятно, использовал 1 для победы в Team1, 2 для победы в Team2, 0 для ничьей.)

Это не удастся, если вы сделаете слишком большие числа, поскольку base_convert работает через float, очевидно. Есть способов обойти это , но если вы исследуете столько возможностей, у вас могут возникнуть другие проблемы: P

...