Начиная с идеи использования rand(36**5)
@Mark Rushakoff, это перетасовывает заполненную нулями строку для рандомизации символов:
('%010x' % [rand(36**5)]).chars.to_a.shuffle.join # => "4a04020701"
('%010x' % [rand(36**5)]).chars.to_a.shuffle.join # => "0e092f0a03"
('%010x' % [rand(36**5)]).chars.to_a.shuffle.join # => "03e240e800"
Чтобы обойти Ruby, не позволяющий заполнить нулями строки в format
, я должен переключиться на заполнение в цепочке методов, что в основном и сделал Марк. Чтобы избежать строк ведущих нулей, это разбивает его обратно на массив, перетасовывает строку и присоединяет ее.
rand(36**5).to_s(36).rjust(10, '0').chars.to_a.shuffle.join # => "e80000h00b"
rand(36**5).to_s(36).rjust(10, '0').chars.to_a.shuffle.join # => "00bv0dy00p"
rand(36**5).to_s(36).rjust(10, '0').chars.to_a.shuffle.join # => "v0hw000092"