|  |      19hills      2012-08-15 18:56:49 +08:00  1 每位都random一下不就好了,然后拼起来 | 
|  |      2luin      2012-08-15 19:18:06 +08:00 同上……又快又省事 | 
|  |      3cmaxvv      2012-08-15 19:20:00 +08:00  1 如果长度没有要求,直接uuid 或者,随机数,然后转成(10个数字+26个字母)36进制 | 
|  |      4PrideChung      2012-08-15 19:42:09 +08:00 简单的就生成GUID然后按需要长度截取,绝对唯一是不可能的,MD5还会有碰撞呢。 | 
|  |      5sethverlo      2012-08-15 19:58:18 +08:00 我想过这个问题。直接对时间进行 md5 貌似可以吧? 1L 和 2L 的算法还得判重呢。。 顺便问 @PrideChung 已知的碰撞已经有了么?只记得好早以前说中国的那个专家说会有碰撞。一直没见过碰撞的情况。。。 | 
|      7alvin2ye      2012-08-15 21:20:40 +08:00 ruby version rand(36**40).to_s 36 | 
|      8lisztli      2012-08-15 21:29:05 +08:00 「唯一」的「随机字符串」 你不觉得这俩词矛盾吗? | 
|  |      9hahastudio      2012-08-15 21:34:06 +08:00 再大的枚举空间,不也是有穷的么= = 先随机一个字符串,然后hash判重?重复就再随机好了= = | 
|  |      10CoX      2012-08-15 21:36:45 +08:00  1 import random from string import letters,digits def GetSalt(num=8): ----item = random.sample((letters+digits)*num,num) ----return ''.join(item) | 
|      12alvin2ye      2012-08-15 23:42:57 +08:00 @fwee  [~] $ irb ree-1.8.7-2011.03 :001 > rand(36**40).to_s 36 => "ueyvoa25sa7x3i1tzdlrz8h0rqf0a7in5jjje0jj" | 
|  |      14ipconfiger      2012-08-16 10:57:49 +08:00 精确控制频率很困难,但是如果要大致上差不离就简单 In [2]: import random In [3]: sample="1234567890" In [4]: random.sample(sample,4) Out[4]: ['2', '0', '3', '9'] In [5]: "".join(random.sample(sample,10)) Out[5]: '6751093482' 现在实现了出随机数,如果要增加1出现的频率,那么就把sample的值改成 sample="11111234567890" 然后继续生成 In [7]: "".join(random.sample(sample,10)) Out[7]: '5110381461' 看,1出现的频率就增加了。 至于要又有字母又有数字还要大小写的 sample="1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM" 就ok了,要谁出现的频率高就多打几个就ok了 | 
|  |      15ratazzi      2012-08-16 11:02:08 +08:00  1 $ which secret.gen secret.gen: aliased to head -2 /dev/urandom | sha1sum | base64 | 
|  |      16chshouyu      2012-08-16 12:05:41 +08:00 md5或者sha1算法 | 
|  |      17Mutoo      2012-08-16 12:23:09 +08:00 php底下有uniqid http://www.w3school.com.cn/php/func_misc_uniqid.asp | 
|      18zhaobei92      2012-08-17 00:17:41 +08:00 from random import randint  p=file('a.txt','a+') pt=p.readlines() p.seek(0) N='abcdefghijklmnopqrstuvwxyz' M=N.upper() L='1234567890' S=N+M+L def func(x): s='' for i in range(10): t=randint(0,len(x)-1) s+=x[t] return s mima=func(S) print mima def dis(mima): for i in pt: if i==mima: mima=func(S) dis(mima) p.write('\n'+mima) p.close() dis(mima) print pt | 
|      19zhaobei92      2012-08-17 00:19:04 +08:00 哎呦,没有缩进。python太难看了。 通过将生成的序列号放在文件里,然后进行读取判断,防止重复。 | 
|      20zhaobei92      2012-08-17 00:19:59 +08:00 程序缩进后应该没问题。这个是我测试生成的。 cpiESpUxAw e0dgnfajte xEHvectmXm A6aTEBL8HI D3wAabuvXS L1gOjovfrb Ica2dJQPC1 | 
|      21chx007      2012-08-17 10:15:41 +08:00 uuid后再将其16进制值转为62进制值  [大小写字母(26+26) + 数字 (10)  ]  |