1

Clojure で、開区間 (0,1) から引き出された疑似乱数の mxn 行列を出力する関数を構築しようとしています。指定された入力は、行の次元 m と列の次元 n になります。私は、Clojure で構築された行列、ネストされたベクトルに精通していますが、これまでに乱数 (疑似) を生成したことはありません。私の最初の推測は、ゼロから始める場合、剰余演算を使用して mxn 行列の入力を送り出すことです。これは、このアイデアを実装する最も簡単な方法ですか?

4

2 に答える 2

4

ビルトイン(rand)は、uniform から 0 と 1 の間の数値を生成します。

(for [row (range m)]
  (for [column (range n)]
    (rand)))

独自のジェネレーターを実装する必要はありません。

于 2013-12-26T20:04:34.273 に答える
2

を使用core.matrixすると、emap関数を使用してこれを行うことができます。

(emap (fn [_] (rand)) (new-array [5 4]))

デフォルトでは、これはネストされた Clojure ベクトルの行列を返します。

[[0.3325314113549507 0.7148578741930893 0.1786957191876699  0.46844096741466656]
 [0.8216388560276083 0.3733963694778344 0.7311554209845575  0.05163744870109632]
 [0.7838218008385947 0.8751976936581514 0.16056093051752107 0.5836745330219952]
 [0.6137578842075752 0.9735681676917135 0.30319026184660314 0.19757184630153146]   
 [0.6216442815557222 0.795080498020428  0.685714719411497   0.1567460494112074]]
于 2013-12-27T18:00:56.777 に答える