我想制作一个随机数生成器。我希望结果是:
"Your results are: 7, 7, 7"
这是我的代码:
random = 3.times.map {Random.new.rand(0..10000)}
puts random #Results ====> 180, 91, 300
@duh={}
random.map {|x|
case x
when 1..3000
@duh["7"]=10000 #Jackpot
when 3001..6000
@duh["Cherries"]=500
when 6001..10000
@duh["Diamond"]=400
end
}
puts "Your results are: #{@duh.keys.join(", ")}!"
数字结果为180, 91, 300
。它给了我一个7
。如何保留我的三个7
?
答案 0 :(得分:3)
您在这里使用map
,但没有以正确的方式使用:
numbers = 3.times.map { Random.new.rand(0..10000) }
prizes = numbers.map do |x|
case x
when 1..3000
[ '7', 10000 ]
when 3001..6000
[ "Cherries", 500 ]
when 6001..10000
[ "Diamond", 400 ]
end
end
puts "Your results are: #{prizes.collect { |p| p[0] }.join(", ")}!"
使用map
的唯一原因是,如果您对该操作的结果感兴趣。否则使用更快的each
,因为它不关心每次迭代的结果。
请记住,在哈希中,您只能拥有一次给定的密钥。一遍又一遍地向7
分配相同的值意味着只有一个7键。