随机生成特殊6位数的算法如何写
随机生成不重复的6位数,有以下几点要求: 1、不能出现8这个数字 2、不能出现升序和降序 例如 123456 987654等,局部也不能出现3位以上的,比如123590、654923等 3、不能出现连续2位及以上相同的数字,例如112233。
需求分析:
1、不能出现8这个数字
2、不能出现升序和降序 例如 123456 987654等,局部也不能出现3位以上的,比如123590、654923等 [951374也应该不合要求,因为951是↓ 137是↑]
function grand($len = 6) { $source = '012345679'; $first = rand(0,8); $code=$source[$first]; $step=$first==8?0:($first==0?1:rand(0,1)); for($i=1;$i<$len;$i++) { if($step) { $step=0; $next_step=($first+1)>8?8:($first+1); $next=$source[rand($next_step,8)]; } else { $step=1; $next_step=($first-1)<0?0:($first-1); $next=$source[rand(0,$next_step)]; } $code.=$next; } return $code; }