求一个不会生成重复值的短网址算法

WBOY
Libérer: 2016-06-23 14:12:39
original
1338 Les gens l'ont consulté

求一个不会生成重复值的短网址算法,网上找了一些,都有一定重复的概率,或者能提供一种重复概率最小的算法也行


回复讨论(解决方案)

这个应该是先生成一个随机字符串,
然后查询数据库中是否已经存在,
不存在就入库,
存在就再换一个再查,

短址本来就只有五位左右的长度,
我觉得不管用什么算法都不可能保证不重复,
所以只能通过对以前生成的来对比。

最简单就是,随机串是根据对应id生成的,也就是看着像随机串,其实是id根据一定的规则生成的,基本上在没有得到这个id范围的上线的话,是不会用重复的

我自己想到的是base62算法 呵呵~~~

<?phpfunction base62($i){	if($i<0) return '';	$ch = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';	$a='';do{$a=$ch[$i%62].$a;$i=intval($i/62);}while($i>0);return $a;}echo base62(63);?>
Copier après la connexion



由一个整型ID 生成它的base62编码
比如 
61 => 10
63 => 11
..
71 => 1a
72 => 1b
900000000(9亿) => YUj72

都会重复的 可以在数据库中做记录

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal