dポイントプレゼントキャンペーン実施中!

Rubyを勉強中の初心者です。
「苺 コーヒー 花 美人 宇宙見物」と書いたファイル(sukinamono.txt)があります。
その中からランダムで1項目取り出して表示するスクリプトをつくりたいと思っています。
getsでsukinamono.txtを読み込んで、randを使うのかなと思ったのですが、スクリプトのうまい書き方がわかりません。
どなたかに教えていただければ幸いです。
よろしくお願いします。

A 回答 (3件)

以下のようにしてください。


-------------------------------------------
# 単語の配列を初期化
words = Array.new
# tanogo.txt のオープン
File.open("tango.txt","r") do |file|
# 1行単位で読み込む
while line = file.gets
#改行を削除
line.chomp!
# wordsへ登録
words << line
end
end
#単語の数を求める
kazu = words.length
# 乱数(整数)を求める
# 0~単語の数-1 の範囲に乱数が収まるようにする
word = words[rand(kazu)]
print word,"\n"
---------------------------------------------
単語が書いてあるファイルをtango.txtとします。
このスクリプトをtest.rb とします。
スクリプトと単語のファイルは同じディレクトリにおいてください。
コマンドプロンプトで、そのディレクトリに移動し、
そこで
ruby -Ks test.rb
と入力してください。
毎回、異なる単語が表示されます。
    • good
    • 0

補足要求です。


質問1.テキストファイルには

コーヒー

・・・
のように1行に1単語があるのですか?
それとも
「苺 コーヒー 花 美人 宇宙見物」のように
1行に各単語がスペース区切りであるのでしょうか。

質問2.環境はwindowsですか、それともlinuxですか。

質問3.rubyのバージョンは1.9以上ですか?
このサイトで質問をする場合は、実行環境とrubyのバージョンは最初に
提示しておいたほうが、回答がつきやすくなります。

この回答への補足

足りないところがありました。申し訳ないです。
1 一行に一単語です。
2 windowsを使っています。
3 バージョンは1.8.7です。

引き続き回答をお待ちしています。

補足日時:2013/07/01 20:43
    • good
    • 0

>スクリプトのうまい書き方



初心者ということであれば、「うまい」ということよりも、まずは「正しく動く」ということに重きを置いたほうがよいかと。
そのうえで、自分のスクリプトのどこに不明点・不満点があるかを明示したほうが、回答が得られやすいと思います。

まずは今時点で、mot-nghinさんが書かれてるスクリプトを晒してみては。

あと、参考:
http://www.google.co.jp/search?hl=ja&q=ruby+arra …

この回答への補足

ご回答ありがとうございます。
書き方がよくなかったですね。
とりあえず今書いているものは以下のとおりです。

array=gets(nil)
array[rand(array.length)]
puts(array)

これを実行してもsample.txtの中身がそのまま出てきてしまい、ランダムに1こ選び出すことができないのです。
どんな風に書けば「sample.txtの中からランダムでひとつ取り出して表示する」ことができるようになるのでしょうか。
*項目が少なければスクリプトにそのまま書いてもいいと思うのですが、膨大な量の項目からランダムでn個取り出したいときに不便なので、選び出す候補を別ファイルに用意して、それを読み込んで実行するようにしたいのです。
引き続き回答をお待ちしています。
よろしくお願いします。

補足日時:2013/07/01 17:08
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!