今天我的朋友提出了一个我仍然无法解决的挑战:"在PHP中生成随机数字序列"
数字排列为拨号盘/模式锁,包括3行3列的1-9个键:
---------------------------
| |
| 1 2 3 |
| |
| 4 5 6 |
| |
| 7 8 9 |
| |
---------------------------
Run Code Online (Sandbox Code Playgroud)
现在,给定一个长度,我们必须使用以下标准生成所提供长度的随机,非重复数字序列:
生成的序列应遵循仅通过相邻数字(可能是对角线)的特定方向/模式,例如(长度:8),12569874:
1 2
4 5 6
7 8 9
Run Code Online (Sandbox Code Playgroud)第一行的数字永远不应该跟第三行的数字相反,反之亦然.列也一样.例如,1后面不能跟8,而6后面不能跟4.
可以从android模式锁系统中轻松猜出更多标准
以下是长度为9的一些示例生成序列:12369874/5,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);
Run Code Online (Sandbox Code Playgroud)
但是,仍然没有运气......
我该如何解决这个问题?