2012-07-28 45 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)]