#これはなにか
単純にランダムなひらがなを数個出すだけです
ユーザネームとかで適当な名前が欲しかったので作りました
#プログラム1
randomname1.rb
hiragana=[]
for c in 'あ'..'ん'
hiragana << c
end
print "number of name :"
n = gets.to_i
while gets.chomp != 'q'
name=""
n.times do
name += hiragana.sample
end
puts name
end
"number of name : "と聞かれるので数字を入れれば
その文字数の文字列を「q」の文字を入力するまで出し続けます
プログラム自体は
hiragana
に「あ」~「ん」を詰めて
適当にとっているだけです
ただしこのプログラムは欠点がいくつかあります
- 「ん」から始まるワードができる
- 「ゐ」「を」
「ぁ」「ぃ」などの不要な文字が入る - 「あゅ」などの読めない文字列を含む
・・・
(「ぁ,あ,ぃ,い,・・・」なので「ぁ」は含みません。ご指摘ありがとうございました)
ということでこの欠点を補うためにプログラム2を作りました
#プログラム2
randomname2.rb
# all hiragana
hiragana = []
# hiragana before small ya, small yu, small yo
hiragana_bef_sy = ['き','ぎ','し','じ','ち','ひ','び','ぴ']
# exception word in hiragana
hiragana_except = ['ぁ','ぃ','ぅ','ぇ','ぉ','ゎ','ゐ','ゑ','を']
for c in 'あ'..'ん'
hiragana << c
end
for c in ['ゃ','ゅ','ょ']
hiragana_bef_sy.each do |c2|
hiragana << c2 + c
hiragana.delete(c)
end
end
hiragana_except.each do |c|
hiragana.delete(c)
end
print "number of name :"
n = gets.to_i
buf=""
while buf != 'q'
name=""
n.times do
name += hiragana.sample
end
puts name
buf = gets.chomp
end
先ほどとの違いは
'hiragana_bef_sy'に「ゃ」のような文字につながる文字を入れて置き
「ゃ」「ゅ」「ょ」と結合してhiragana
に格納します
(拗音を適切に使わせるついでに「きゃ」「しょ」など一音として扱います)
要らない文字はhiragana_except
にメモして消します
#実際に使った感想はどうだったか
本来はハンドルネームを作るつもりだったのですか
いい感じの文字列は何回やっても取れませんでした
マルコフ連鎖とか機械学習させたデータを使う方式のほうがいいかもしれません