Rubyでランダムな文字列を生成する方法
概要
現在、「A」から「Z」までの 8 文字の擬似ランダムな大文字文字列を生成しています。
value = ""; 8.times{value << (65 + rand(25)).chr}
しかし、これは見た目がきれいではなく、単一のステートメントではないため引数として渡すこともできません。大文字と小文字が混合された文字列 “a” .. “z” と “A” .. “Z” を取得するには、次のように変更しました。
value = ""; 8.times{value << ((rand(2)==1?65:97) + rand(25)).chr}
でもゴミみたいです。
誰かがより良い方法を持っていますか?
解決策
(0...8).map { (65 + rand(26)).chr }.join
私はゴルフに多くの時間を費やしすぎます。
(0...50).map { ('a'..'z').to_a[rand(26)] }.join
そして最後のものはさらに混乱しますが、より柔軟で無駄なサイクルが少なくなります。
o = [('a'..'z'), ('A'..'Z')].map(&:to_a).flatten
string = (0...50).map { o[rand(o.length)] }.join
ランダムなテキストを生成したい場合は、次を使用します。
50.times.map { (0...(rand(10))).map { ('a'..'z').to_a[rand(26)] }.join }.join(" ")
このコードは、単語長が 10 文字未満のランダムな単語列を 50 個生成し、スペースで結合します。