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

解决方案 »

  1.   

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

  2.   

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

  3.   


    <?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);?>
    由一个整型ID 生成它的base62编码
    比如 
    61 => 10
    63 => 11
    ..
    71 => 1a
    72 => 1b
    900000000(9亿) => YUj72