我的函数应该给我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))发布于 2019-01-22 01:21:36
要解决你的问题,你不需要这个函数。您可以随机取10,然后调用set函数来删除重复项,并仅对正数进行过滤,然后从中取6。代码是这样的。20只是一个随机样本
(take 6 (filter pos? (set (take 20 (repeatedly #(rand-int 60))))))或
(->> #(rand-int 60) (repeatedly) (take 20) (set) (filter pos?) (take 6) )
https://stackoverflow.com/questions/54294175
复制相似问题