正在尝试比较两个PHP数组
我正在尝试创建一个模拟彩票的程序。我用6个随机数创建第一个数组,然后尝试用随机数填充第二个数组,直到它们相同为止。当数字在1到9之间时,它是有效的,但是当我把它扩展到1到49之间时,就像真正的彩票一样,我只是得到了一个暂停正在尝试比较两个PHP数组,php,arrays,Php,Arrays,我正在尝试创建一个模拟彩票的程序。我用6个随机数创建第一个数组,然后尝试用随机数填充第二个数组,直到它们相同为止。当数字在1到9之间时,它是有效的,但是当我把它扩展到1到49之间时,就像真正的彩票一样,我只是得到了一个暂停 <?php $number1 = $_POST['number1']; $number2 = $_POST['number2']; $number3 = $_POST['number3']; $number4 = $_POST['nu
<?php
$number1 = $_POST['number1'];
$number2 = $_POST['number2'];
$number3 = $_POST['number3'];
$number4 = $_POST['number4'];
$number5 = $_POST['number5'];
$number6 = $_POST['number6'];
$userArray = array($number1, $number2, $number3, $number4, $number5, $number6);
// mix and max numbers that can be used with th lottery
$min = 1;
$max = 49;
// random number between 0 and 1 simulating lottery
$lotNumber1 = rand ($min, $max);
$lotNumber2 = rand ($min, $max);
$lotNumber3 = rand ($min, $max);
$lotNumber4 = rand ($min, $max);
$lotNumber5 = rand ($min, $max);
$lotNumber6 = rand ($min, $max);
$lotArray = array($lotNumber1, $lotNumber2, $lotNumber3, $lotNumber4, $lotNumber5, $lotNumber6);
asort($userArray);
asort($lotArray);
$userString = implode($userArray, "_");
$lotString = implode($lotArray, "_");
$i = 0;
set_time_limit(10000);
while($lotString != $userString) {
$i ++;
$lotNumber1 = rand ($min, $max);
$lotNumber2 = rand ($min, $max);
$lotNumber3 = rand ($min, $max);
$lotNumber4 = rand ($min, $max);
$lotNumber5 = rand ($min, $max);
$lotNumber6 = rand ($min, $max);
$lotArray = array($lotNumber1, $lotNumber2, $lotNumber3, $lotNumber4, $lotNumber5, $lotNumber6);
asort($lotArray);
$lotString = implode($lotArray, "_");
}
echo '<pre>';
print_r ($lotString);
echo '</pre>';
echo '<pre>';
print_r ($userString);
echo '</pre>';
echo "YOU WON it took ".$i." times";
?>
这是一个问题,您应该使用shuffle(范围(1,49))并使用前6个以确保没有重复
另一个答案表明,这是一个很大的计算,大约1300万分之一。这是许多循环生成随机数并对其进行排序,您可能需要一个更大的超时,即30秒
我的代码是
1_2_3_4_5_61_2_3_4_5_6你花了12004536次赢了它
real 0m41.926s首先,您以错误的方式使用内爆
字符串内爆(string$glue,array$pieces)
因此在您的情况下,它将是$userString=in爆(“\u“,$userArray”)代码>,“\”是胶水;)也许你只是没有中奖——这就是为什么它被称为彩票;)=)好的。。。他只是运气不好:(我现在就试试,阿瑞斯,谢谢,没问题;)告诉我效果是否更好谢谢你的帮助,我似乎还是要暂停了。我会继续努力的!我的时间在25秒到7分钟之间。要做的计算量相当大。大多数默认超时为30秒。我通过命令行运行它来获取时间。
$lotNumber1 = rand ($min, $max);
$lotNumber2 = rand ($min, $max);
$lotNumber3 = rand ($min, $max);
$lotNumber4 = rand ($min, $max);
$lotNumber5 = rand ($min, $max);
$lotNumber6 = rand ($min, $max);
<?php
$number1 = 1;
$number2 = 2;
$number3 = 3;
$number4 = 4;
$number5 = 5;
$number6 = 6;
$userArray = array($number1, $number2, $number3, $number4, $number5, $number6);
// mix and max numbers that can be used with th lottery
$min = 1;
$max = 49;
// random number between 0 and 1 simulating lottery
$lotArray = (range($min,$max));
asort($userArray);
$userString = implode($userArray, "_");
$lotString = "";
$i = 0;
set_time_limit(10000);
while($lotString != $userString) {
$i ++;
shuffle($lotArray);
$lotA = array_slice($lotArray,0,6);
asort($lotA);
$lotString = implode($lotA, "_");
}
echo '<pre>';
print_r ($lotString);
echo '</pre>';
echo '<pre>';
print_r ($userString);
echo '</pre>';
echo "YOU WON it took ".$i." times";
?>