背景
短縮 URL 等で使われているようなランダム文字列を生成したい. 62 進数は半角英数字 0-9a-zA-Z で表現することとする.
コード
STR_LENGTH = 3
table = [('0'..'9'), ('a'..'z'), ('A'..'Z')].map { |i| i.to_a }.flatten
hash = STR_LENGTH.times.map { table[rand(62)] }.join
メモ
rand で生成した数値を to_s で文字へと変換すればいいと思ったが,どうやら to_s は 36 進数までにしか対応していないらしい.デフォルトで 62 進数も扱えるようにしてくれると助かるのだが.
参考
How best to generate a random string in Ruby - Stack Overflow