1. ホーム
  2. ruby

[解決済み] Rubyでランダムな文字列を生成する方法

2022-02-08 02:59:06

質問

現在、"A" ... "Z" の8文字の大文字の疑似乱数文字列を生成しています。

value = ""; 8.times{value  << (65 + rand(25)).chr}

しかし、これでは見た目が悪いし、1つの文ではないので引数として渡すことができない。 大文字と小文字が混在する文字列 "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個のランダムな単語を生成し、スペースで結合します。