概要
予め指定した文字群を使って、任意の長さのランダム文字列を作る。
<手順>
- 文字群を文字列として準備
→chars = "ABCDE"
- 配列を準備
→array = Array.new(10)
- ランダム文字列を生成
→(array.map! {|e| chars[rand(chars.length)]}).join
考え方
ランダム文字列に使う文字群を文字列として準備する。
chars = "ABCDE"
ランダム文字列長と同じ要素数の配列を準備する。
array = Array.new(10)
1 2 3 4 |
array = Array.new(10) p array # [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil] |
配列をランダムに選んだ文字で埋める。
array.map! {|e| chars[rand(chars.length)]}
1 2 3 4 |
array.map! {|e| chars[rand(chars.length)]} p array # ["B", "B", "D", "A", "C", "B", "E", "E", "E", "D"] |
配列を文字列に変換する。
p array.join
1 2 3 |
p array.join # "BBDACBEEED" |
実装例
数字と英大文字・小文字を使って20文字のランダム文字列を生成。
1 2 3 4 5 6 |
chars = ("0".."9").to_a.join + ("A".."Z").to_a.join + ("a".."z").to_a.join array = Array.new(20) str = (array.map! {|e| chars[rand(chars.length)]}).join p str # "3JRIjPZPOcsHRLotcAye" |