適当な長さのランダム英数文字列を生成する

#!/ruby/bin/ruby

numbers = ('0'..'9').to_a
alphabets = ('a'..'z').to_a
characters = numbers + alphabets
length = rand(3) + 6

pass = String.new

until (/[0-9]/ =~ pass and /[a-z]/ =~ pass) do
    pass = (
        Array.new(length) do
            characters[rand(characters.size)]
        end
    ).join
end

p pass

1 行目は Ruby の実行ファイルの場所を指定する。Windows なら C:\Ruby\bin にあるのでこのままで動く。これを適当なファイル名(拡張子は .rb とする)で保存すればコマンドプロンプトでファイル名を打つだけで動作する。

長さは 6 〜 8 でランダム、数字とアルファベットの両方が含まれているものだけが 1 個生成され表示されます。大文字のアルファベットも使いたい場合は

upperAlphabets = ('A'..'Z').to_a
characters = numbers + alphabets + upperAlphabets

とかやればいいです。含まれているかどうかのチェック方法は以下同文なので省略。

2012/05/08 追記 : Regexp#=~ を使えばもっと簡単に書けることが分かったので修正。ソースが大幅に圧縮されました。