获得我可以在6/49彩票上玩的所有可能组合

时间:2012-10-14 17:36:29

标签: php for-loop

我的想法是在6/49抽奖中获得所有可能的组合。 对于前两个数字,它的工作原理。何时,我为第三个数字添加条件:Undefined variable: b。我不明白为什么。我在那里用echo来检查程序是否正常工作。

这是代码。

for ($i=1 ; $i<50 ; $i++)
{
    $a=$i;
    for ($j=1 ; $j<50 ; $j++)
    {
        if ($i!=$j)
        {
            $b=$j;  
        }
        for ($k=1 ; $k<50 ; $k++)
        {

            if ($k!=$j && $k!=$i)
            {
                $c=$k;
                echo "$a $b $c<br>";
            }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

在第一次迭代$i == $j上,永远不会初始化$b。您可以通过扩展if来覆盖内部循环来修复它:

for ($i=1 ; $i<50 ; $i++)
{

  $a=$i;
  for ($j=1 ; $j<50 ; $j++)
  {

    if ($i!=$j)
    {
        $b=$j;

      for ($k=1 ; $k<50 ; $k++)

      {

        if ($k!=$j && $k!=$i)
        {
            $c=$k;
            echo "$a $b $c<br>";
        }
      }
    }
  }
}

答案 1 :(得分:0)

当$ i == $ j时,

$ b未定义。我想你只想在$ i!= $ j时运行内部for循环。请注意,此问题通常通过函数递归来解决(然后您不需要对6个数字进行硬编码)。

希望有所帮助,

  • 约翰内斯

答案 2 :(得分:0)

为什么不使用6个嵌套for循环....

我没有得到你正在使用的语言,所以我会把它放在一些伪代码中......

for (a=1; x<50-5; a++){
  for (b=a+1; x<50-4; b++){
    for (c=b+1; x<50-3; c++){
      for (d=c+1; x<50-2; d++){
        for (e=d+1; x<50-1; e++){
          for (f=e+1; x<50; f++){
            print (a,b,c,d,e,f);
          }
        }
      }
    }
  }
}