生成随机但唯一的号码以供参考ID
我想生成唯一号码,以便我可以将它们用作参考号码来处理我的客户端请求。生成随机但唯一的号码以供参考ID
我不想让数字重复我是否使用任何数据库来存储数字。
我只是想用一个简单的算法来生成随机数。
我使用类似
rand(10*45, 100*98)
是否有可能做这样的事情。 我知道我的要求似乎很奇怪,但我只是想知道它是否可能。
为什么不在Unix时间戳前面加上你的随机数?这将确保唯一性。
$random = time() . rand(10*45, 100*98);
否则,您可以将您的号码存储在一个文件中。如果可以,将它们存储在数据库中。
是..好主意,从来没有想到这一点。谢谢:) – prakashchhetri 2013-02-08 22:52:34
只要你不在同一秒内生成2,无论如何 – 2013-02-08 23:06:22
@SamDufel也可以使用'microtime'。 – Kermit 2013-02-08 23:08:00
如果您接受十六进制数,则:
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(大约一万亿)可能的唯一e值。它应该足够随机地创建许多唯一的ID。
正如我所说的,我只是在寻找数字。但是,无论如何感谢:) – prakashchhetri 2013-02-08 23:28:41
我没有使用任何数据库,我只是希望它很简单,就像参考号将邮寄给客户和所有者,他们可以与该参考号的帮助进行通信。 @njk的想法足够好并且足够逻辑 – prakashchhetri 2013-02-08 22:52:12
它必须是小数(即基数10)吗? – 2013-02-08 22:54:18
不,它可以是任何数字 – prakashchhetri 2013-02-08 23:16:21