3

我想生成唯一编号,以便我可以将它们用作参考编号来处理我的客户请求。

我不希望数字重复,我也不使用任何数据库来存储数字。

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

我正在使用类似的东西

rand(10*45, 100*98)

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

4

3 回答 3

7

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

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

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

于 2013-02-08T22:49:00.510 回答
4

为什么不使用该功能,php为此提供了:

独特的

例子:

uniqid(rand(10*45), true)
于 2013-02-08T23:00:31.760 回答
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。

于 2013-02-08T23:19:08.413 回答