2014-03-05 107 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