到目前为止,我有以下代码,这只会生成字母。我希望得到字母和数字
#Generate random 8 digit number and output to file
output = File.new("C:/Users/%user%/Desktop/Strings.txt", "w")
i = 0
while i < 500
randomer = (0...8).map{65.+(rand(26)).chr}.join
output << randomer
output << "\n"
i = i+1
end
output.close
答案 0 :(得分:3)
这个怎么样:
def random_tuple(length)
letters_and_numbers = "abcdefghijklmnopqrstuvwxyz0123456789"
answer = ""
length.times { |i| answer << letters_and_numbers[rand(36)] }
answer
end
output = ""
500.times { |i| output << random_tuple(8) + "\n" }
你也可以让函数附加换行符,但我认为这种方式更为通用。
答案 1 :(得分:3)
(('a'..'z').to_a + ('0'..'9').to_a).sample( 8 ).join
此是随机,但不会重复使用任何数字/字母,因此它不会涵盖所有可能的字符串。
答案 2 :(得分:2)
你可以做这样的事情
i = 0
while i < 500
randomer = (1..8).map { (('a'..'z').to_a + ('0'..'9').to_a)[rand(36)] }.join
output << randomer
output << "\n"
i = i+1
end
output.close
享受。
答案 3 :(得分:2)
在0-9和a-f
中使用SecureRandom.hex(10)
生成的字母和数字
或
SecureRandom.base64.delete('/+=')[0, 8]
http://www.ruby-doc.org/stdlib-1.9.3/libdoc/securerandom/rdoc/SecureRandom.html
答案 4 :(得分:2)
所有数字和字母用于基数36:
max = 36**8
500.times.map{ rand(max).to_s(36).rjust(8,'0') } #rjust pads short strings with '0'