如何可以创建一个二维阵列,其第一栏是i和j和第二列之间的整数是小于n创建在红宝石图案
类似a = [[6,4],[7,3],[8,1],[9,1],[10,3],[11,2]]
我较小的随机数的2D阵列知道(i..j).to_a
创建我的第一列,rand(n)
创建我的第二列。
如何可以创建一个二维阵列,其第一栏是i和j和第二列之间的整数是小于n创建在红宝石图案
类似a = [[6,4],[7,3],[8,1],[9,1],[10,3],[11,2]]
我较小的随机数的2D阵列知道(i..j).to_a
创建我的第一列,rand(n)
创建我的第二列。
i, j = 6, 11
(i..j).map { |x| [x, rand(10)] }
# => [[6, 8], [7, 6], [8, 4], [9, 9], [10, 0], [11, 3]]
你几乎没有。使用map
每个项目转换成你的i..j
Range
到Array
有两个条目:
i,j,n = 4,8,10
a = (i..j).map { |x| [x,rand(n)] }
的备选答案(即得到了由海报移除),几乎是正确的,只是缺少一些计算。它得到了相当严厉向下投不加评论,我重新张贴在这里,有修正的数学,使OP有一些替代方法:
i, j, n = 6, 11, 10
Array.new(j - i + 1) { |x| [ x + i, rand(n)] }
备选答案:
i=10
j=20
n=10
[(i..j).to_a , Array.new(j-i+1){rand(n)} ].transpose
范围是枚举,不需要转换为数组来映射它。 – tokland
@tokland:没有发现,更新,谢谢! –