我想创建自己的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) ))))
我正在考虑记忆并反复思考,但不知道如何做。