我想随机生成字母跟数字的组合,每一位可以数字也可以是字母随机的,比如生成 4 位的,第一位可以是数字也可以是字母,第二位可以是数字也可以是字母,依次类推。比如还可以生成 5 位、6 位、7 位等等。
def g_salt(len)
chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
salt = ""
1.upto(len) {|i| salt << chars[rand(chars.size-1)]}
salt
end
g_salt 4
#3 楼 @flowerwrong 不用 SecureRandom
的话,直接用 Array#sample
好了:
def g_salt(len)
chars = Array('a'..'z') + Array('A'..'Z') + Array(0..9)
len.times.map { chars.sample }.join
end
(0...8).map { (65 + rand(26)).chr }.join
=> "DAWUVWHD"
(0...50).map { ('a'..'z').to_a[rand(26)] }.join
=>"zdalsfggektuozqhubmykjxmhwqzbxroibmskbcujdarobetvk"
o = [('a'..'z'), ('A'..'Z')].map { |i| i.to_a }.flatten
string = (0...50).map { o[rand(o.length)] }.join
=>"tKzshdvulxGyrfzpMgmSMJcpfxzUkpehqslKfonttknQEnyBWK"
from:http://stackoverflow.com/questions/88311/how-best-to-generate-a-random-string-in-ruby/88341#88341
谢谢啊 各位,已经解决了,我是这样写的
([('A'..'Z'),('a'..'z'),*('0'..'9')]-%w(0 1 I O)).sample(4).join
#3 楼 @flowerwrong 谢谢啊 各位,已经解决了,我是这样写的
([('A'..'Z'),('a'..'z'),*('0'..'9')]-%w(0 1 I O)).sample(4).join