Clojure 采摘;“随机”;向量中的元素

Clojure 采摘;“随机”;向量中的元素,clojure,clojure-contrib,Clojure,Clojure Contrib,我希望从向量中挑出随机(即伪随机)元素。该函数将有一个输入,称为r,用于选择要选择的元素数。另外,向量,称之为v,也必须是一个输入。这是我从未尝试过的事情,我不知道从哪里开始 施工中的假设为r小于v中的元素数量。从v中选择的重复元素也不是问题。要清楚的是,这些元素将严格是数字,事实上它们将是浮点,我希望在选择后保留这种结构 我试过一些类似的方法 (take 2 (iterate rand-nth [2 3 4 5 6 7])) 但是从列表中返回向量和一个随机元素,即 ([2 3 4 5 6 7

我希望从向量中挑出随机(即伪随机)元素。该函数将有一个输入,称为r,用于选择要选择的元素数。另外,向量,称之为v,也必须是一个输入。这是我从未尝试过的事情,我不知道从哪里开始

施工中的假设为r小于v中的元素数量。从v中选择的重复元素也不是问题。要清楚的是,这些元素将严格是数字,事实上它们将是浮点,我希望在选择后保留这种结构

我试过一些类似的方法

(take 2 (iterate rand-nth [2 3 4 5 6 7]))
但是从列表中返回向量和一个随机元素,即

([2 3 4 5 6 7] 7)
java的一些类似帖子包括:


您想在此处重复
而不是
迭代

(repeatedly 2 #(rand-nth [2 3 4 5 6 7]))

从向量中的向量
v
返回
r
随机元素的函数是

(defn choose-random [r v]
  (mapv v (repeatedly r #(rand-int (count v)))))

(重复n(rand int(count v))
如果允许重复元素,为什么
r
必须限制在
v
中的元素数量?这是我想要施加的约束。我在v中寻找r,不想| r |超过v的长度。这是人为的限制。