我正在寻找根据MySQL数据库生成没有重复的随机数。我如何更改以下函数,以便它检查数据库是否已生成生成的数字,如果不存在,则将其插入表中。另外,应如何摆放桌子?我并不是最好设计行以使其尽可能小(且实用)。
功能:
function genNonRepNum($min, $max, $quantity) {
$numbers = range($min, $max);
shuffle($numbers);
return array_slice($numbers, 0, $quantity);
}
使用功能:
print_r(genNonRepNum(1000, 10000, 3));
返回:
Array ( [0] => 8586 [1] => 9666 [2] => 8169 )
很棒,但是我只希望它检查数据库以查看它是否存在,如果不存在则插入它。提前致谢。
此处的解决方案是对自动递增的数字使用加密。作为我的意思的示例,假设您有一个加密算法,该算法采用8位,一个密钥并吐出8位加密数据。如果您使用相同的密钥并加密了0到255的值,则将获得所有0到255的值作为输出,但是顺序不同。您不会得到任何重复,因为根据定义,加密是可逆的,这意味着无法使用相同的密钥和算法将两个不同的值加密为相同的值,因为您将无法对其进行解密。由于像雪崩效应这样的密码质量,数字序列将显得随机。因此,基本上,您只需要根据质量与速度的需求,使用自己选择的算法,使用秘密密钥对自动递增的数字进行加密即可。这样就可以生成新的信用卡号,并确保尚未发行卡号。有关更多信息,请查看“格式保留加密”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句