我正在寻找在Clojure中构建一个函数,它输出从开放区间(0,1)中提取的m×n矩阵的伪随机数。指定的输入将是行维度m和列维度n。我熟悉Clojure中构造的矩阵,嵌套向量,但之前从未生成过随机(伪)数。我的第一个猜测,如果从头开始,将使用模运算来抽出m x n矩阵的输入。这是实现这个想法的最简单方法吗?
答案 0 :(得分:4)
内置(rand)
从0到1之间的统一生成一个数字。所以:
(for [row (range m)]
(for [column (range n)]
(rand)))
无需实现自己的生成器。
答案 1 :(得分: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]]