使用ruby中的模式创建二维数组

时间:2013-07-27 14:29:10

标签: ruby arrays design-patterns multidimensional-array

如何创建一个二维数组,第一列是i和j之间的整数,第二列是一个小于n的随机数

类似于a = [[6,4],[7,3],[8,1],[9,1],[10,3],[11,2]]

我知道(i..j).to_a创建了我的第一列,rand(n)创建了我的第二列。

4 个答案:

答案 0 :(得分:5)

使用Enumerable#map

i, j = 6, 11
(i..j).map { |x| [x, rand(10)] }
# => [[6, 8], [7, 6], [8, 4], [9, 9], [10, 0], [11, 3]]

答案 1 :(得分:3)

你快到了。使用mapi..j Range中的每个项目转换为Array,其中包含两个条目:

i,j,n = 4,8,10
a = (i..j).map { |x| [x,rand(n)] }

答案 2 :(得分:1)

另一个答案(被海报删除)几乎是正确的,只是缺少一些计算。它在没有评论的情况下得到了相当严厉的评价,我在这里重新发布,对数学进行了更正,以便OP有其他选择:

i, j, n = 6, 11, 10    
Array.new( ­j - i + 1 ) { |x| [ x + i, rand(n)­] }

答案 3 :(得分:1)

备选答案:

i=10
j=20
n=10
[(i..j).to_a , Array.new(j-i+1){rand(n)} ].transpose