置换生成器php / javaScript

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

我有13场足球比赛,主场胜利,平局,客场胜利。一个人必须预测所有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++; 
        }   
    }

我的脚本没有提供所有可能的组合。任何关于如何解决这个问题的想法将不胜感激。

java php combinations permutation
1个回答
1
投票
$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工作的。有ways around it,但如果你正在探索许多可能性,你可能会遇到其他问题:P

© www.soinside.com 2019 - 2024. All rights reserved.