n = 20
c = [*?A..?Z + *?0..?9]
size = c.size
n.times.map { c[rand(size)] }.join
#=> "IE210UOTDSJDKM67XCG1"
или, без замены:
c.sample(n).join
#=> "GN5ZC0HFDCO2G5M47VYW"
если это необходимо. (Я изначально имел c = [*(?A..?Z)] + [*(?0..?9)], но видел из ответа @sawa, что это можно было бы упростить совсем немного.)
Ответ 3
Элегантный способ сделать это в Rails 5 (я не тестирую это в других версиях Rails):
SecureRandom.urlsafe_base64(n)
где n - это количество цифр, которое вы хотите.
ps: SecureRandom использует массив для монтирования вашей буквенно-цифровой строки, поэтому имейте в виду, что nдолжно быть количеством цифр, которое вы хотите + 1.
например: если вы хотите 8-значный буквенно-цифровой:
SecureRandom.urlsafe_base64(9)
Ответ 4
Чтобы создать случайную строку от 10 до 20 символов, включая только от А до Я и числа, оба всегда: