如何使用ruby 1.8.7生成一个包含随机数的4x5矩阵

如何使用ruby 1.8.7生成一个包含随机数的4x5矩阵,ruby,matrix,Ruby,Matrix,我一直在尝试通过执行以下操作(在ruby 1.8.7中)来生成一个大小为4x5且充满随机数的矩阵: 但上述方法似乎不起作用,特别是我不确定如何创建任意大小的空矩阵,然后在ruby 1.8.7中填充,请尝试以下方法: require 'matrix' rows = (0...5).map do (0...4).map do rand() end end m_rand = Matrix[rows] 这允许您使用随机数创建任意大小的矩阵: Matrix.build(rows,

我一直在尝试通过执行以下操作(在ruby 1.8.7中)来生成一个大小为4x5且充满随机数的矩阵:

但上述方法似乎不起作用,特别是我不确定如何创建任意大小的空矩阵,然后在ruby 1.8.7中填充,请尝试以下方法:

require 'matrix'

rows = (0...5).map do
  (0...4).map do
    rand()
  end 
end

m_rand = Matrix[rows]

这允许您使用随机数创建任意大小的矩阵:

Matrix.build(rows, cols) { |row, col| rand }

从我看到的情况来看,上面的内容似乎并没有初始化矩阵对象?在上面的代码之后,我将如何调用单个矩阵元素?实际上,我刚刚意识到这会创建一个数组,而不是矩阵对象。使用现有矩阵类的优点是预构建的矩阵操作。例如,如果m_rand是一个矩阵,我可以做m_rand*m_rand@Zakoff-对不起。我以为你说的是2d阵列。请参阅编辑后的答案,了解如何使用Matrix类执行此操作。如果m_rand的定义如上所述,那么Matrix操作是否会对其起作用?我假设m_rand需要明确定义为矩阵对象+1,这或多或少就是
build
ruby 1.9方法所做的。我相信build函数只是从ruby版本1.9.2/1.9.3开始引入的。我还是把它留在这里,因为它几乎完全符合回答者的要求,而且比其他解决方案更抽象。
m_rand = Array.new(4){Array.new(5){rand} }
Matrix.build(rows, cols) { |row, col| rand }