PHP半随机字符串生成器

时间:2012-09-06 17:11:42

标签: php

如何使我的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);

--- --- UPDATE 代码有效。只需要在用户注册时为其生成简单的联盟ID。我的意思是优雅 - 也许我正在以最简单的方式或以不同的方式(可能在循环中)完成最终产品代码的方式,基本上我想学习不同的方法来实现相同的结果。我想要其他编码观点。

输出类似于:提示#6C1D2

1 个答案:

答案 0 :(得分:1)

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

排除哈希值,任何给定ID与另一个给定ID冲突的可能性为1/(12*4*10) = 1/480,大约为0.2%。但是,新ID不与任何其他ID冲突的可能性为1-(1-1/480)^c,其中c是您已有的ID数。只有50个ID,你已经有10%的碰撞几率。

您可以使用uniqid函数获取唯一的哈希值。