2014-03-05 109 views
0

所以我正在寫一個簡單的程序,生成20個句子的基礎上隨機選擇動詞,名詞,介詞,和文章從單獨的數組。基本上我有4個單獨的陣列,每個單詞有5個詞,每個詞都與各自的詞性有關。紅寶石循環隨機輸出

我有一個循環設置爲運行20次,每個數組隨機顯示一個包含一個或兩個單詞的句子。我現在遇到的問題是,該程序僅僅生成20個相同句子的實例,而不是20個不同的隨機句子。我的循環語句目前看起來是這樣的:

20.times do 
puts article[randarticle].capitalize + "\s" + noun[randnoun] + "\s" + verb[randverb 
] + "\s" + prep[randprep] + "\s" + article[randarticle2] + "\s" + noun[randnoun2] 
+ "." 
end 

我知道這是不是我想要什麼正確的語法,但我似乎無法推測出來。任何和所有的幫助將不勝感激!

+0

有什麼'「\ S」'一回事呢?該元字符用於掃描正則表達式中的空白。你可能只需要一個空格''''。在你的'20.times'循環中,你需要每次通過循環改變你的變量(*例如*,'randarticle','randnoun'等等)。否則,每次都是一樣的。 – lurker

+1

我們無法判斷'randarticle'等是否是在循環外調用的變量或函數調用。如果前者,然後將它們設置在循環中。 – Matt

+0

顯示更多一點的代碼。 'randarticle'是如何定義或設置的(不需要重複所有的 - 我想他們都看起來非常相似)? –

回答

1

假設你有所有文章,動詞等,在數組中它是那樣簡單:

20.times do 
    puts [articles, nouns, verbs, preps, articles, nouns].map(&:sample).join(' ').capitalize + '.' 
end 
+0

這很好,謝謝你。 – user3384982