生成随机但唯一的号码以供参考ID

生成随机但唯一的号码以供参考ID

问题描述:

我想生成唯一号码,以便我可以将它们用作参考号码来处理我的客户端请求。生成随机但唯一的号码以供参考ID

我不想让数字重复我是否使用任何数据库来存储数字。

我只是想用一个简单的算法来生成随机数。

我使用类似

rand(10*45, 100*98)

是否有可能做这样的事情。 我知道我的要求似乎很奇怪,但我只是想知道它是否可能。

+0

我没有使用任何数据库,我只是希望它很简单,就像参考号将邮寄给客户和所有者,他们可以与该参考号的帮助进行通信。 @njk的想法足够好并且足够逻辑 – prakashchhetri 2013-02-08 22:52:12

+0

它必须是小数(即基数10)吗? – 2013-02-08 22:54:18

+0

不,它可以是任何数字 – prakashchhetri 2013-02-08 23:16:21

为什么不在Unix时间戳前面加上你的随机数?这将确保唯一性。

$random = time() . rand(10*45, 100*98); 

否则,您可以将您的号码存储在一个文件中。如果可以,将它们存储在数据库中。

+0

是..好主意,从来没有想到这一点。谢谢:) – prakashchhetri 2013-02-08 22:52:34

+1

只要你不在同一秒内生成2,无论如何 – 2013-02-08 23:06:22

+0

@SamDufel也可以使用'microtime'。 – Kermit 2013-02-08 23:08:00

为什么不使用功能,PHP提供用于这一目的:

uniqid

例子:

uniqid(rand(10*45), true) 
+0

'uniqid(rand(10 * 45,true))'* – Kiee 2014-08-21 10:15:50

如果您接受十六进制数,则:

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。

+0

正如我所说的,我只是在寻找数字。但是,无论如何感谢:) – prakashchhetri 2013-02-08 23:28:41