1

我正在寻找在 Clojure 中构建一个函数,该函数输出从开区间 (0,1) 中提取的伪随机数的 mxn 矩阵。指定的输入将是行维度 m 和列维度 n。我熟悉 Clojure 中的构造矩阵、嵌套向量,但之前从未生成过随机(伪)数。我的第一个猜测是,如果从头开始,将使用模运算来抽出 mxn 矩阵的输入。这是实现这个想法的最简单方法吗?

4

2 回答 2

4

内置(rand)从 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 回答