如何创建一个二维数组,第一列是i和j之间的整数,第二列是一个小于n的随机数
类似于a = [[6,4],[7,3],[8,1],[9,1],[10,3],[11,2]]
我知道(i..j).to_a
创建了我的第一列,rand(n)
创建了我的第二列。
答案 0 :(得分:5)
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)
你快到了。使用map
将i..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