最好是php,python,ruby语言实现。能否控制数字和字母随机出现的频率?
例如:m65m6yvber1qislv8o1,m7k02dqFWQ1qzfsy1o1
例如:m65m6yvber1qislv8o1,m7k02dqFWQ1qzfsy1o1
|
1
每位都random一下不就好了,然后拼起来
|
|
luinAug 15, 2012
2
同上……又快又省事
|
|
3
如果长度没有要求,直接uuid
或者,随机数,然后转成(10个数字+26个字母)36进制 |
|
PrideChungAug 15, 2012
4
简单的就生成GUID然后按需要长度截取,绝对唯一是不可能的,MD5还会有碰撞呢。
|
|
sethverloAug 15, 2012
5
我想过这个问题。直接对时间进行 md5 貌似可以吧?
1L 和 2L 的算法还得判重呢。。 顺便问 @PrideChung 已知的碰撞已经有了么?只记得好早以前说中国的那个专家说会有碰撞。一直没见过碰撞的情况。。。 |
|
alvin2yeAug 15, 2012
7
ruby version
rand(36**40).to_s 36 |
|
lisztliAug 15, 2012
8
「唯一」的「随机字符串」
你不觉得这俩词矛盾吗? |
|
hahastudioAug 15, 2012
9
再大的枚举空间,不也是有穷的么= =
先随机一个字符串,然后hash判重?重复就再随机好了= = |
|
10
import random
from string import letters,digits def GetSalt(num=8): ----item = random.sample((letters+digits)*num,num) ----return ''.join(item) |
|
alvin2yeAug 15, 2012
12
@fwee
[~] $ irb ree-1.8.7-2011.03 :001 > rand(36**40).to_s 36 => "ueyvoa25sa7x3i1tzdlrz8h0rqf0a7in5jjje0jj" |
|
ipconfigerAug 16, 2012
14
精确控制频率很困难,但是如果要大致上差不离就简单
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
$ which secret.gen
secret.gen: aliased to head -2 /dev/urandom | sha1sum | base64 |
|
chshouyuAug 16, 2012
16
md5或者sha1算法
|
|
MutooAug 16, 2012
17
php底下有uniqid http://www.w3school.com.cn/php/func_misc_uniqid.asp
|
|
zhaobei92Aug 17, 2012
18
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 |
|
zhaobei92Aug 17, 2012
19
哎呦,没有缩进。python太难看了。
通过将生成的序列号放在文件里,然后进行读取判断,防止重复。 |
|
zhaobei92Aug 17, 2012
20
程序缩进后应该没问题。这个是我测试生成的。
cpiESpUxAw e0dgnfajte xEHvectmXm A6aTEBL8HI D3wAabuvXS L1gOjovfrb Ica2dJQPC1 |
|
chx007Aug 17, 2012
21
uuid后再将其16进制值转为62进制值 [大小写字母(26+26) + 数字 (10) ]
|