我正在阅读“学习编程”这本书,我遇到了一个我遇到麻烦的练习。
year = (rand(1900...1990))
while true do
puts "What would you like to say to grandma?"
ask = gets.chomp
if
ask == ask.downcase
puts "SPEAK UP SONNY"
elsif
ask == ask.upcase
puts "NO, NOT SINCE #{year}!"
end
break if ask == "BYE"
end
一切运作正常,但如果兰特数“年”出现不止一次,它会重复相同的数字。有没有办法让它在同一循环中出现时成为一个唯一的随机数?
提前谢谢
答案 0 :(得分:0)
将年份分配移动到循环中,以便在每个选择之前分配它。
答案 1 :(得分:0)
year
的值在循环内不会改变,因为它是在循环外定义的。如果定义在循环内移动,它会改变,但你可能还有多年的重复。要解决这两个问题,请更改
year = rand(1900...1990)
到
years = (1900...1990).to_a.shuffle
(在循环之外)并更改
puts "NO, NOT SINCE #{year}!"
到
puts "NO, NOT SINCE #{years.shift}!"
(或years.pop
)。如果重复超过91次,则会引发异常。