ランダムな平仮名の文字列を生成する

Ruby でランダムな平仮名の文字列を作る方法で悩む。別に、Ruby ではなく JavaScript 等でもいいのだが、せっかくだから Ruby で……と思っていたら詰まってしまった。

puts 12354.chr => RangeError

Integer#chr は 0 から 255 の範囲しかとらない。ではどうするかというと、pack を使えばいいようだ

puts [12354].pack('U') => あ

で、完成スクリプト

s = ''
4.times {
s << [0x3041 + rand(0x3094 - 0x3041)].pack('U')
}
puts s

となる。

……と、ここまで書いていて思い出したのだが、このスクリプトはまさに "里見の謎型ネームジェネレータ" そのものではないか。里見の謎については Wikipedia を参照