我可以使用PHP随机字符串shuffle获得的不同字符串数

时间:2012-01-01 00:43:56

标签: php math random permutation

我目前正在运行名为http://nn.pe的网址缩短网站,并使用此代码的6字符随机哈希

$charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    return substr(str_shuffle($charset), 0, 6);

我想知道有多少不同的字符串使用这些字符和整数?

你不需要准确,我猜是不到一百万。

5 个答案:

答案 0 :(得分:3)

62^6 = 56,800,235,584

在6个字符的哈希值中,[a-zA-Z0-9]中有62种组合。

答案 1 :(得分:3)

警告

我只是在PHP 5.3.8源代码中查找了它。使用php_rand()。这是等效于rand()的C.我对str_shuffle非常小心!它(通常)会为getrandmax()输出提供尽可能多的可能性,在Windows上可以是32,768。

在大多数系统中,理论上最大值为21亿。

答案 2 :(得分:3)

如果洗牌是像Fisher Yates那样适当的洗牌,你有(26 * 2 + 10)!/(26 * 2 + 10-6)! = 62!/ 56! = 44,161,653,680可能性,因为我们没有替代品。

答案 3 :(得分:1)

五十六亿,八亿。

对于散列中的每个给定位置,您有26 + 26 + 10个选项。这为您提供了62 ^ 6个可能的字符串。 62 ^ 6 = 56 800 235 584。

答案 4 :(得分:0)

62^6 = 56,800,235,584组合。

但是,您必须控制碰撞。