RandSVDをマイナー(タイニー?)バージョンアップした。RandSVD(というよりも乱択アルゴリズムの特異値分解)では、ランダム行列との積により行列を小さくする処理を含んでいる。なので、乱数のシードを固定できるようにしたほうが親切だと考えた。 ※ NMatrixに、numpy.random.seedとかみたいにグローバルに固定できる仕組みがあると、勝手に思い込んでいたのがそもそもの間違いでして…
require 'randsvd' mat = NMatrix.rand [5, 5] nb_singular_values = 2 nb_power_iterations = 3 random_seed = 1 u, s, vt = RandSVD.gesvd(mat, nb_singular_values, nb_power_iterations, random_seed)
単純にメソッド引数を後ろに増やしました。最初からキーワード引数とかなにかで、柔軟に引数増やせるように設計すれば良かったと反省…