php算法
编号1-n的人围成一圈,开始报数m,则第m号人出列,然后从m+1号人开始报数 不断循环报数 直至所以人出列的算法
编号1-n的人围成一圈,开始报数m,则第m号人出列,然后从m+1号人开始报数 不断循环报数 直至所以人出列的算法
function rand_number($num)
{
return rand(0,$num);
}
function outnumber($n,&$arr,$max)
{
$number=rand_number($max);
if($number>$n) $number=$number%$n+1;
while(!empty($arr)){
if(!isset($i)) {unset($arr[$number]);var_dump($arr);}//删除元素
$i=$number;//需要索引才能找到下一个间距为新$number的元素
$number=rand_number($max);//生成下一个随机数
if($number>$n) $number=$number%$n+1;
echo '下一个间距'.$number.'元素'.'<br>';
$count=0;
$n=end($arr);
while($count<$number){
if($i>=$n) $i=1;//最后一个元素则返回到第一个元素
else $i++;
if(!isset($arr[$i])) {continue;}
else {$count++;}//找到一个元素才++
}
unset($arr[$i]);
var_dump($arr);
}
}
$max=100;
$n=6;
for($i=1;$i<=$n;$i++) $arr[$i]=$i;
outnumber($n,$arr,$max);
- 上一篇:设置URL访问指定IP的服务器
- 下一篇:PHP生成树
精彩图集
精彩文章






