今天我的朋友提出,我仍然解决不了的挑战:数字被安排为拨号盘/模式“生成在PHP中的随机数字序列”生成数字随机“模式锁定”序列
-lock即由3行1-9键和3列:
---------------------------
| |
| 1 2 3 |
| |
| 4 5 6 |
| |
| 7 8 9 |
| |
---------------------------
现在,给定的长度,我们要生成的设置长度的数字的随机的,非重复的序列,使用这些标准:
甲生成的序列应该按照特定的方向/图案仅通过相邻数字去(可能对角),例如(长度:8),12569874:从第一行
1 2 4 5 6 7 8 9
位数应该永远不会被随后是从第三行开始,反之亦然。列也是如此。例如,一个1不能被随后是8和6不能跟一个4.
可以猜测多个准则可以很容易地从机器人图案锁定系统
下面是产生一些示例对于长度为9的序列:5分之12369874,142536987等,以及用于长度= 6:987532等
我试图与rand()
做到这一点:
$chars = "123456789";
$length = 9;
$clen = strlen($chars)-1;
$id = '';
for ($i = 0; $i < $length; $i++) {
$id .= $chars[mt_rand(0,$clen)];
}
return ($id);
但是,仍然没有运气...
我该如何解决这个问题?
运行,你能解释一下你的条件比较好? – Manav
听起来就像你在考虑标准,然后应该首先尝试它,以暴力方式。通过任何方式获得你正在寻找的结果(无论是多圈还是块大声笑)。你应该可以做到。只要保持循环,直到所有规则匹配。 – IncredibleHat
@Manav:谢谢4回复,请检查更新的问题 –