0

我正在构建一个包含 100 个项目的散列,并且我还有一个随机数生成器,它生成 0 到 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

2 回答 2

6
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)]
于 2012-07-28T06:06:35.560 回答
4
hash = {}
100.times {|n| hash[n]=rand(101)}

第一行将初始化空哈希(如您在上面所做的)。第二行分配 0 到 99 作为散列的键,以及 0 到 100 之间的随机值。

times是属于 Integer 类的方法。给定一个块,它将在每个连续的整数n次中传递。

于 2012-07-28T06:05:16.133 回答