来自随机数的Ruby对角矩阵

时间:2014-03-24 11:59:28

标签: ruby arrays vector matrix diagonal

我需要创建一个对角矩阵(8x8)并在[-30..45]范围内填充随机数 我需要将数组转换为向量并对其进行排序

我尝试了不同的方式。

首先我创建矩阵(8x8)

matrix = Matrix.build(8) {0}
puts matrix.each_slice(matrix.column_size) {|r| p r }

我还制作了一个数组,其中包含范围

的随机数
array = (-30..45).to_a.shuffle
puts array [0..8]

制作了对角矩阵

matrixd = Matrix.diagonal(1,2,3,4,5,6,7,8)
puts matrixd.each_slice(matrix.column_size) {|r| p r}

如何用我的数组填充对角矩阵并将其放入向量? 我有2种用于排序矢量的算法

class Array
  def bubblesort!
    length.times do |j|
      for i in 1...(length - j)
        if self[i] < self[i - 1]
          self[i], self[i - 1] = self[i - 1], self[i]
        end
      end
    end
    self
  end
end

class Array
  def selectionsort!
    0.upto(length - 2) do |i|
      (min_idx = i + 1).upto(length - 1) do |j|
        if self[j] < self[min_idx]
          min_idx = j
        end
      end
      if self[i] > self[min_idx]
        self[i], self[min_idx] = self[min_idx], self[i]
      end
    end
    self
  end
end

1 个答案:

答案 0 :(得分:3)

对角矩阵:

elems = [*-30..45].sample(8)
Matrix.diagonal(*elems)

其余的,我不确定你想要完成什么