Php 又是乐透计划
我以前在一个小型彩票程序中遇到了一个问题,该程序计算了6/49的所有可能组合(在PHP中) 这是我目前的问题。我使用条件使数字不会重复,但在下一个循环中,当第一个数字更改时,我有一个重复的组合。让我举例说明: 我有这样的组合:Php 又是乐透计划,php,variables,for-loop,Php,Variables,For Loop,我以前在一个小型彩票程序中遇到了一个问题,该程序计算了6/49的所有可能组合(在PHP中) 这是我目前的问题。我使用条件使数字不会重复,但在下一个循环中,当第一个数字更改时,我有一个重复的组合。让我举例说明: 我有这样的组合: 1 2 3 4 1 2 3 5 1 2 3 6 ... 1 2 4 3 1 2 4 5 1 2 4 6 所以我的彩票1234和1243是一样的 你知道怎么解决吗?我想不出什么 这是代码(我只做了4/49:D) 谢谢 更新: 代码如下所示: < ?php
1 2 3 4
1 2 3 5
1 2 3 6
...
1 2 4 3
1 2 4 5
1 2 4 6
所以我的彩票1234
和1243
是一样的
你知道怎么解决吗?我想不出什么
这是代码(我只做了4/49:D)
谢谢强>
更新:
代码如下所示:
< ?php
for($a=1; $a<50; $a++)
{
for($b=$a+1; $b<50; $b++)
{
for($c=$b+1; $c<50; $c++)
{
for($d=$c+1; $d<50; $d++)
{
for($e=$d+1; $e<50; $e++)
{
for($f=$e+1; $f<50; $f++)
{
$t=$t+1;
}
}
}
}
}
}
echo "$t";
?>
<?php
对于($a=1;$a要获得所有组合,应该将内部循环变量值初始化为父循环变量值+1
例如4/49
for($a=1; $a<50-3; $a++)
for($b=$a+1; $b<50-2; $b++)
for($c=$b+1; $c<50-1; $c++)
for($d=$c+1; $d<50; $d++)
echo "$a $b $c $d<br>";
用于($a=1;$a当您直接使用$t=$t+1时,您得到了未定义的错误变量t。但是您没有初始化$t。所有其他变量都已初始化。PEAR组合数学类为您完成了所有这些:所以本质上您是在寻找6位字符串中数字1-49的所有唯一排列?我不明白是什么你的程序应该这样做,以及你想要实现的目标。不,他想忽略已经打印的票号的任何排列。你可以将它们排序并存储在一个数组中,然后进行查找,如果你已经有了这个组合($a=array($a,$b,$c,$d);sort($a);$combines[$a[0][$a[1][$a[2][$a[3]]=true;
)但可能有一个更优雅的解决方案。类似这样的解决方案是的,本姆。@AndreKR:谢谢!我会尝试一下。更新后的anwser:您也可以通过更改结束条件来避免一些循环。我刚做了。不工作:)举例来说,在程序的中间,我将得到:1、2、16、44、45、1、2、16、44、46、1、1、2、^、x、等。我有点困惑我自己…我甚至不知道我说的是对还是错…IDEEA是我加了一个$t= $t+i;人们在互联网上说的e数字是中奖的可能性。我的错…当我第一次运行它时,它给了我大约1900万,或者说190万…我没有仔细阅读它。这个想法是6/49的真实概率大约是13983万,所以我知道我错了。我现在再次运行它,它给出了确切的数字13983816但是在数字之前有一个错误:未定义变量:t仍然。程序工作!:DLet me get you..你想得到从1到50的所有6位数字的可能组合吗??
for($a=1; $a<50-3; $a++)
for($b=$a+1; $b<50-2; $b++)
for($c=$b+1; $c<50-1; $c++)
for($d=$c+1; $d<50; $d++)
echo "$a $b $c $d<br>";