• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数の文章グループからランダムで文章を抽出する方法)

複数の文章グループからランダムに文章を抽出する方法

このQ&Aのポイント
  • 複数の文章グループからランダムに文章を抽出し、ランダムに並べ替えて書き出す方法について教えてください。
  • ソフトやプログラムを使用して、複数の文章グループからランダムに一つずつ文章を抽出し、並べ替えて出力する方法を知りたいです。
  • 初心者でも使いやすいソフトやプログラムがあれば、それを使って複数の文章グループからランダムに抽出して並べ替える方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • sholmes
  • ベストアンサー率81% (89/109)
回答No.2

「グループ」や「文章」をどういう形で与えたいのかによって、実現方法は変わるかと思います。 とりあえず、グループ毎にテキストファイルを作成し、文章というのは1行単位であるものと仮定しました。 以下、Rubyでの実現例だけ貼っておきます。 # 動作確認環境 Windows7 Ruby1.9.2 # http://rubyinstaller.org/downloads/ # 「q7008269.rb」というテキストファイルに、次の一行を記入して下さい puts ARGV.map{|path|File.readlines(path).sample.chomp}.shuffle.join # 後は、こういったコマンドラインを叩いてみてください >ruby q7008269.rb file1.txt [file2.txt file3.txt...fileN.txt] # 抽出対象の文章を「group_1.txt」「group_B.txt」といった、「group_」から始まるテキストに記載すると決めれば、こう書けます。 >ruby q7008269.rb group_* # 実行結果はこうなりました。 # 実行する都度、結果がランダムで変化しています。 D:\okwave>ruby q7008269.rb group_* グループ1の6行目。グループ3の8行目。グループ2の3行目。 D:\okwave>ruby q7008269.rb group_* グループ2の1行目。グループ3の5行目。グループ1の9行目。 D:\okwave>ruby q7008269.rb group_* グループ3の3行目。グループ1の2行目。グループ2の4行目。 D:\okwave>ruby q7008269.rb group_* グループ1の8行目。グループ3の7行目。グループ2の9行目。 D:\okwave>ruby q7008269.rb group_* グループ2の2行目。グループ1の7行目。グループ3の8行目。

yuu-mmm
質問者

お礼

Rubyは初めて使ったのですが、この方法は簡単だと感じました。 手間も余りかかりませんし、文字数が多くても対応しやすいです。 今のところ理想に一番近い方法です。 ソフトでボタン一発で出来るようなものが作れたらいいのですが、さすがにそんなに簡単にはいきませんよね^^; ありがとうございました。

その他の回答 (2)

回答No.3

エクセルの関数で作ってみた A列に“りんご”,“みかん”,“なし”,“かき”,“くり”,“びわ”を入れ E1に、=INDEX(A1:A6,RAND()*6+1,1,1) ※ A1:A6はA列のデータ範囲、RAND()*6の6はA列のデータ個数 B列に“なす”,“きゅうり”,“すいか”,“いちご”を入れ F1に、=INDEX(B1:B4,RAND()*4+1,1,1) ※ B1:B4はB列のデータ範囲、RAND()*4の4はB列のデータ個数 両方をあわせて G1に、=INDEX(A1:A6,RAND()*6+1,1,1) & "+" & INDEX(B1:B4,RAND()*4+1,1,1)

yuu-mmm
質問者

お礼

この方法で確かにランダムに並び替えることが出来ました。 ありがとうございました。

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

VBやJavaScriptなら、初心者用の例題として最適なプログラムだと思いますので、プログラムコードを書くならどうにでも出来そうですけどね。でも、そこまでしないでもEXCELを使えば、VLOOKUPとRAND関数で行けそうです。 基本だけを説明すると、まずはA列とB列に 1 りんごです 2 みかんです 3 すいかです : という表を作ります。そのうえで、C1あたりに =VLOOKUP(INT(RAND()*4)+1,A1:B4,2) という式を書きます(A1:B4は、表の大きさに合わせます。また *4 は表の行数に合わせます)。 これで、ランダムに表のどれかを引っ張り出すことが出来ます。これを2セット作って例えば =C1&C10 とかで、文字列をひっつければ出来上がりです。表や式の記述されてないどこかのセルに、なにかを入力するたびに、上記の内容が変わります。

yuu-mmm
質問者

お礼

A列に4つ、B列に4つの文章を入れ、 セルC1に、 =VLOOKUP(INT(RAND()*4)+1,A1:B4,2) といれたのですが、#N/Aとでてしまいます。 EXCELも初心者なので簡単な見落としや勘違いをしているのかもしれませんが、そこで躓いています・・・

関連するQ&A

専門家に質問してみよう