我想生成唯一的数字,以便我可以将它们用作参考号来处理我的客户请求。
我不希望数字重复,我也不使用任何数据库存储数字。
我只是想用一个简单的算法来生成随机数。
我正在使用像
这样的东西 rand(10*45, 100*98)
是否可以做类似的事情。 我知道我的要求似乎很奇怪,但我只是想知道它是否可能。
答案 0 :(得分:6)
为什么不用Unix时间戳作为随机数的前缀?这将确保唯一性。
$random = time() . rand(10*45, 100*98);
否则,您可以将数字存储在文件中。如果可以,请将它们存储在数据库中。
答案 1 :(得分:4)
答案 2 :(得分:2)
如果您接受十六进制数字,则:
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。