2012-07-28 46 views
0

我要建有100個項目,我也有一個隨機數生成器生成介於0和100個隨機值100創建的100件事情隨機值的哈希每個值

我想一個散列遍歷我的數字,按照連續的順序0..100,並將它們分配給散列的鍵。

然後,我想遍歷100個隨機數並將它們分配給哈希值。

hash = {} 
(0..100).each {|e| puts e} #just prints out the values 
@numbers = 100.times.map{ 0+Random.rand(0..100)} 

這就是我到目前爲止。任何幫助將非常感激。謝謝!

回答

4
hash = {} 
100.times {|n| hash[n]=rand(101)} 

第一行將初始化空散列(如上所述)。第二行將0到99分配爲散列的鍵,以及0和100之間的隨機值。

times是屬於Integer類的方法。給定一個塊,它將在每個連續的整數中傳遞n次。

+0

謝謝MichaelMichael! – 2012-07-28 06:08:39

+0

有了這個,你可以多次獲得相同的號碼。如果我正確地理解了這個問題,他只需要1到100之間的每個數字一次。 – Mischa 2012-07-28 06:10:22

+0

@米沙:是的。我無法從問題中確定重複值是否可以接受。如果不是,那麼你的解決方案是正確的。 – michaelmichael 2012-07-28 06:15:01

5
h = {} 
a = (1..100).to_a 
100.times { |i| h[i+1] = a.delete_at(Random.rand(a.size)) } 

或者:

keys = (1..100).to_a 
vals = keys.shuffle 
hash = Hash[keys.zip(vals)]