Rubyでランダムな文字列を生成する方法 質問する

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}

しかし、それはゴミのように見えます。

もっと良い方法を知っている人はいますか?

ベストアンサー1

(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個のランダムな単語文字列を生成し、スペースで結合します。

おすすめ記事