随机报价生成器重复相同的报价,为什么?
Random quote generator repeats the same quotes, why?
大家好!有一个用 Shoes 制作的报价生成器。
@think.click do
@noun_nominative.shuffle
@base.shuffle
@thought.replace(@base.sample)
end
@noun_nominative =
[
"word1", "word2", "word3", "word4",
"word5", "word6", "word7", "word8"
]
@noun_accusative =
[
"word1", "word2", "word3"
]
@base =
[
@noun_nominative.sample.capitalize + "regular quote",
"Regular quote" + @noun_nominative.sample,
"Regular quote" + @noun_accusative.sample,
"Regular quote" + @noun_accusative.sample,
@noun_nominative.sample.capitalize + "regular quote",
"And another one base for a quote"
]
它只是用 noun_nominative 和 [=27 中的随机词替换 base 数组中的短语=],每次单击按钮 "think" 时显示一个新报价。
该程序应该在每次点击时生成一个全新的报价,但是,它一直显示曾经生成过的相同短语。我怎样才能让它在不重新打开程序的情况下重新生成报价?
感谢您的回答!
您需要在每次点击时生成随机报价,而不是在应用程序启动时预先生成它们。这应该是做你想做的最懒惰的改变:
def generate_random_quote(nominative, accusative)
all_generated_quotes = [
nominative.sample.capitalize + " - это всякий, кто стремится убить тебя, неважно на чьей он стороне.",
"Иногда " + nominative.sample + " не попадает в " + accusative.sample + ", но " + nominative.sample + " не может промахнуться.",
"Нет ничего труднее, чем гибнуть, не платя смертью за " + accusative.sample + ".",
"Индивидуумы могут составлять " + accusative.sample + ", но только институты могут создать " + accusative.sample + ".",
nominative.sample.capitalize + " - это тот человек, который знает о вас все и не перестает при этом любить вас.",
"Трудно себе представить, что сталось бы с человеком, живи он в государстве, населенном литературными героями."
]
all_generated_quotes.sample
end
@think.click do
freshly_baked_random_quote = generate_random_quote(@noun_nominative, @noun_accusative)
@thought.replace(freshly_baked_random_quote)
end
当然,这是相当浪费的。它生成所有可能的报价并丢弃除一个以外的所有报价。如果这是一个问题,解决这个问题将是你的功课。 :)
大家好!有一个用 Shoes 制作的报价生成器。
@think.click do
@noun_nominative.shuffle
@base.shuffle
@thought.replace(@base.sample)
end
@noun_nominative =
[
"word1", "word2", "word3", "word4",
"word5", "word6", "word7", "word8"
]
@noun_accusative =
[
"word1", "word2", "word3"
]
@base =
[
@noun_nominative.sample.capitalize + "regular quote",
"Regular quote" + @noun_nominative.sample,
"Regular quote" + @noun_accusative.sample,
"Regular quote" + @noun_accusative.sample,
@noun_nominative.sample.capitalize + "regular quote",
"And another one base for a quote"
]
它只是用 noun_nominative 和 [=27 中的随机词替换 base 数组中的短语=],每次单击按钮 "think" 时显示一个新报价。
该程序应该在每次点击时生成一个全新的报价,但是,它一直显示曾经生成过的相同短语。我怎样才能让它在不重新打开程序的情况下重新生成报价?
感谢您的回答!
您需要在每次点击时生成随机报价,而不是在应用程序启动时预先生成它们。这应该是做你想做的最懒惰的改变:
def generate_random_quote(nominative, accusative)
all_generated_quotes = [
nominative.sample.capitalize + " - это всякий, кто стремится убить тебя, неважно на чьей он стороне.",
"Иногда " + nominative.sample + " не попадает в " + accusative.sample + ", но " + nominative.sample + " не может промахнуться.",
"Нет ничего труднее, чем гибнуть, не платя смертью за " + accusative.sample + ".",
"Индивидуумы могут составлять " + accusative.sample + ", но только институты могут создать " + accusative.sample + ".",
nominative.sample.capitalize + " - это тот человек, который знает о вас все и не перестает при этом любить вас.",
"Трудно себе представить, что сталось бы с человеком, живи он в государстве, населенном литературными героями."
]
all_generated_quotes.sample
end
@think.click do
freshly_baked_random_quote = generate_random_quote(@noun_nominative, @noun_accusative)
@thought.replace(freshly_baked_random_quote)
end
当然,这是相当浪费的。它生成所有可能的报价并丢弃除一个以外的所有报价。如果这是一个问题,解决这个问题将是你的功课。 :)