生成唯一的随机数

时间:2014-09-14 19:26:18

标签: clojure

我想创建自己的rand-nth,它只在向量中包含每个元素一次,当没有更多唯一数字生成它时会引发异常。 我能想到这样做的唯一方法是通过递归,但它不能按我的意愿工作,首先它需要一个数字n表示重复的次数,而不是rand-nth的工作方式。 这是我到目前为止的代码,但它不会做我想要的。 (此代码从名为deck的包含52张牌的矢量中选择随机牌)

(defn random-card-seq
  "Generate n number of random cards from deck"
  [n]
  (loop [cnt n
         cards []
         new-deck deck]
    (if (zero? cnt)
      cards
      (recur (dec cnt) (conj cards (rand-nth deck)) (pop random from dec HOW TO CREATE NEW DECK) ))))

我正在考虑记忆并反复思考,但不知道如何做。

1 个答案:

答案 0 :(得分:1)

Shuffle将帮助您做您想做的事:

(defn n-random-elements
  [n deck]
  (take n (shuffle deck)))