我的函数应该给我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))
答案 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) )