我有以下代码
0
此代码在指定范围之间生成随机的n个数字。
但是,它多次返回类似于以下的输出
<?php
function randomGen($min, $max, $quantity) {
$numbers = range($min, $max);
shuffle($numbers);
$tmp = array_slice($numbers, 0, $quantity);
//sort($tmp);
return $tmp;
}
echo '<pre>';
$arr = randomGen(2,7,5);
//sort($arr);}
print_r($arr);
在这里2 3 4 5是连续的数字。 我正在尝试修改上面的代码,以使其不会返回超过3个连续数字。输出应与此类似
Array
(
[0] => 3
[1] => 4
[2] => 7
[3] => 5
[4] => 2
)
如您所见,它只有3个连续数字5 6 7。
我尝试了以下
Array
(
[0] => 2
[1] => 3
[2] => 5
[3] => 6
[4] => 7
)
但是它没有提供预期的输出。
在此先感谢您的帮助。
答案 0 :(得分:0)
请看看我们是否可以做这样的事情
function randomGen($min, $max, $quantity,$rangestep) {
$numbers = range($min, $max,$rangestep);
$tmp = array_slice($numbers, 0, $quantity);
sort($tmp);
shuffle($tmp);
return $tmp;
}
echo '<pre>';
$arr = randomGen(2,7,5,1);
$count = 0;
$first = $arr[0];
$i = 1;
//for($i = 1; $i < count($arr); $i++) {
$counter = 0;
while ($i < count($arr)) {
$ele = $arr[$i];
if ($counter >=3) {
$counter = 0;
$arr = randomGen(2,7,8,2);
$first = $arr[0];
$i = 1;
}
else {
if ($ele - $first === 1) {
$counter++;
//continue;
}
$first = $ele;
}
$i++;
}
print_r($arr);
die;