PHP半随机字符串生成器


PHP semi-random string generator

如何使我的id生成器代码优雅:当用户注册时,他们会得到一个id。生成的id不是唯一的可能性有多大?还有-如何使我的代码变得优雅?谢谢!

#hash = random url generated from 128 chars
$cac = substr($hash, 64,-60);
$words = array('GET', 'COOL', 'WOW', 'YES', 'NICE', 'BUCK', 'LUCK', 'FUN', 'CASH', 'TIP', 'PEEK', 'TAG'); 
$rword = rand(0,11);
$syms = array('-', '#', '$', '@');
$rsym = rand(0,3); 
$nums = rand(0,9);
$aff_id_temp = $words[$rword] . $syms[$rsym] . $cac . $nums;
$final_id = strtoupper($aff_id_temp);

---更新---代码有效。只需要在用户注册时为他们生成一个简单的联盟id。我所说的优雅是指——也许我破解最终产品代码的方式更简单,或者用不同的方式(也许是循环)——基本上我想学习不同的方法来获得相同的结果。我想要其他的编码视角。

输出类似于:TIP#6C1D2

由于散列,实际上为零。也就是说,它完全取决于散列函数。

不包括哈希,任何给定id与另一个给定id碰撞的几率为1/(12*4*10) = 1/480,约为0.2%。然而,新id不与任何其他id碰撞的概率为1-(1-1/480)^c,其中c是您已经拥有的id数。只有50个id,你就已经有10%的几率发生碰撞了。

您可以使用uniqid函数获得一个唯一的散列。