【问题标题】:Creating a hash of 100 things with random values for each value创建 100 个事物的哈希,每个值都有随机值
【发布时间】:2012-07-28 14:13:37
【问题描述】:

我正在构建一个包含 100 个项目的哈希,并且我还有一个随机数生成器,它生成 100 个介于 0 和 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)}

这就是我到目前为止所得到的。任何帮助将非常感激。谢谢!

【问题讨论】:

    标签: ruby iterator hash


    【解决方案1】:
    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)]
    

    【讨论】:

      【解决方案2】:
      hash = {}
      100.times {|n| hash[n]=rand(101)}
      

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

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

      【讨论】:

      • 这样你可以多次获得相同的号码。如果我正确理解了这个问题,他只想要 1 到 100 之间的每个数字一次。
      • @Mischa:没错。我无法从问题中确定重复值是否可以接受。如果不是,那么您的解决方案是正确的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 2022-10-16
      • 2017-04-16
      • 2018-10-25
      • 2021-06-29
      • 1970-01-01
      相关资源
      最近更新 更多