为什么我的随机函数不总是有效?

时间:2019-01-21 16:33:33

标签: clojure

我的函数应该给我6个数字,但要避免为零,并且不应重复任何数字,但有时它会给我带来0个或重复的数字

(defn function
  []
  (def lista (sort (take 6 (repeatedly #(rand-int 60)))))
  (loop []
    (when (or (= (contains? (set lista) 0) true) (< (count (set lista)) 6))
      (def lista (sort (take 6 (repeatedly #(rand-int 60)))))))
  (println lista))

1 个答案:

答案 0 :(得分:1)

要解决您的问题,您不需要该功能。您可以随机取10并调用set函数以删除重复项,并过滤ponly以获取正数,然后从中取6。 代码是这样的。 20只是一个随机样本

(take 6 (filter pos? (set (take 20 (repeatedly #(rand-int 60))))))

(->> #(rand-int 60) (repeatedly) (take 20) (set) (filter pos?) (take 6) )