java - 排列生成器 php/javaScript

标签 java php combinations permutation

我有 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++; 
        }   
    }

我的脚本没有给出所有可能的组合。任何有关如何解决此问题的想法将不胜感激。

最佳答案

$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

关于java - 排列生成器 php/javaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52094310/

相关文章:

combinations - 找到所有可能存在冲突的组合的数量

java - 一个只听特殊键的关键监听器?

php - 如何使用 foreach PHP 列出类别和子类别中的值

java - 具有低 GC 负载的快速 CSV 解析器

php - 无法使用下面的文本创建 QR

php - 在 Javascript 文件中在屏幕上打印 html 输入属性和变量

java - 创建 BitSet 的组合

php - 所有不重复的具有特定基数的组合

java - 如何在 Java 中枚举压缩文件夹的内容?

java - Hadoop 自定义 InputFileFormat 生成空结果