我想生成唯一编号,以便我可以将它们用作参考编号来处理我的客户请求。
我不希望数字重复,我也不使用任何数据库来存储数字。
我只是想使用一个简单的算法来生成随机数。
我正在使用类似的东西
rand(10*45, 100*98)
有没有可能做这样的事情。我知道我的要求似乎很奇怪,但我只想知道它是否可能。
为什么不在随机数前面加上 Unix 时间戳?这将确保唯一性。
$random = time() . rand(10*45, 100*98);
否则,您可以将号码存储在文件中。如果可以,请将它们存储在数据库中。
如果您接受十六进制数字,则:
function random_id($bytes) {
$rand = mcrypt_create_iv($bytes, MCRYPT_DEV_URANDOM);
return bin2hex($rand);
}
echo random_id(5); // Ex: a06e0e4e72
5 个字节(即 40 位)创建了大约 2^40(大约一万亿)个可能的唯一值。它应该足够随机以创建许多唯一 ID。