
1 9hills 2012-08-15 18:56:49 +08:00 每位都random一下不就好了,然后拼起来 |
2 luin 2012-08-15 19:18:06 +08:00 同上……又快又省事 |
3 cmaxvv 2012-08-15 19:20:00 +08:00 如果长度没有要求,直接uuid 或者,随机数,然后转成(10个数字+26个字母)36进制 |
4 PrideChung 2012-08-15 19:42:09 +08:00 简单的就生成GUID然后按需要长度截取,绝对唯一是不可能的,MD5还会有碰撞呢。 |
5 sethverlo 2012-08-15 19:58:18 +08:00 我想过这个问题。直接对时间进行 md5 貌似可以吧? 1L 和 2L 的算法还得判重呢。。 顺便问 @PrideChung 已知的碰撞已经有了么?只记得好早以前说中国的那个专家说会有碰撞。一直没见过碰撞的情况。。。 |
7 |
8 lisztli 2012-08-15 21:29:05 +08:00 「唯一」的「随机字符串」 你不觉得这俩词矛盾吗? |
9 hahastudio 2012-08-15 21:34:06 +08:00 再大的枚举空间,不也是有穷的么= = 先随机一个字符串,然后hash判重?重复就再随机好了= = |
10 CoX 2012-08-15 21:36:45 +08:00 import random from string import letters,digits def GetSalt(num=8): ----item = random.sample((letters+digits)*num,num) ----return ''.join(item) |
12 alvin2ye 2012-08-15 23:42:57 +08:00 @fwee [~] $ irb ree-1.8.7-2011.03 :001 > rand(36**40).to_s 36 => "ueyvoa25sa7x3i1tzdlrz8h0rqf0a7in5jjje0jj" |
14 ipconfiger 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了 |
15 ratazzi 2012-08-16 11:02:08 +08:00 $ which secret.gen secret.gen: aliased to head -2 /dev/urandom | sha1sum | base64 |
16 chshouyu 2012-08-16 12:05:41 +08:00 md5或者sha1算法 |
17 Mutoo 2012-08-16 12:23:09 +08:00 php底下有uniqid http://www.w3school.com.cn/php/func_misc_uniqid.asp |
18 zhaobei92 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 |
19 zhaobei92 2012-08-17 00:19:04 +08:00 哎呦,没有缩进。python太难看了。 通过将生成的序列号放在文件里,然后进行读取判断,防止重复。 |
20 zhaobei92 2012-08-17 00:19:59 +08:00 程序缩进后应该没问题。这个是我测试生成的。 cpiESpUxAw e0dgnfajte xEHvectmXm A6aTEBL8HI D3wAabuvXS L1gOjovfrb Ica2dJQPC1 |
21 chx007 2012-08-17 10:15:41 +08:00 uuid后再将其16进制值转为62进制值 [大小写字母(26+26) + 数字 (10) ] |