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