2016-07-06 14 views
-3

我想製作一個隨機數生成器。我希望得到的結果是:如何複製散列中的鍵和值

"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

看起來像你只是試圖使用鍵,但不使用值。也許陣列可能適合你更好? – spickermann

+1

它看起來好像你在這裏使用錯誤的數據結構。 – tadman

回答

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鍵。

+0

等等,我如何找到第一,第二和第三選擇,以便我可以做''如果firstchoice == secondchoice && secondchoice == thirdchoice''? – Charles

+1

@Charles這是一個不同的問題,所以請嘗試將其作爲一個整體發佈。它使答案保持專注。 – tadman