Clojure 从均匀分布生成伪随机数

Clojure 从均匀分布生成伪随机数,clojure,clojure-contrib,Clojure,Clojure Contrib,我希望在Clojure中构建一个函数,输出从开放区间(0,1)提取的伪随机数的m x n矩阵。指定的输入将是行维度m和列维度n。我熟悉Clojure中的构造矩阵、嵌套向量,但以前从未生成过随机数(psuedo)。我的第一个猜测是,如果从零开始,将使用模运算为mxn矩阵输出输入。这是实现这个想法的最简单的方法吗 内置的(rand)从0到1之间的统一值生成一个数字。因此: (for [row (range m)] (for [column (range n)] (rand))) 无需实

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

内置的
(rand)
从0到1之间的统一值生成一个数字。因此:

(for [row (range m)]
  (for [column (range n)]
    (rand)))
无需实现您自己的生成器。

内置的
(rand)
从0到1之间的统一值生成一个数字。因此:

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

无需实现您自己的生成器。

使用
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]]

使用
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]]

这是我问的第一个问题。这是一个好问题,但这似乎违反了搜索引擎的使用常识。这是另一个好的第一站参考。如果你决定不是统一分发,而是想要其他东西,我想看看《白炽灯》里有什么。这是我问的第一个问题。这是个好问题,但这似乎违反了搜索引擎的使用常识。这是另一个好的第一站参考。如果你决定不统一发行,你还需要其他东西,我想看看白炽灯里有什么。