我想知道在clojure中如何使用包含随机数。我想到了这个:
(import java.util.Random) (def rnd (Random.)) (defn random-float [min max rnd] (+ min (* (.nextDouble rnd) (- max min))))
看来,Java只有包容性/排他性的随机函数。根据文件:
nextdouble的总合同是选择一个双值 (约)在0.0d(含)到1.0d范围内均匀分布 (exclusive),伪随机生成并返回。
是否有方法拥有此函数的包含/包含版本?我在考虑用一点点(0.0000000000000001)来增加最大值。不知道如果我这样做会有什么影响。
这行吗?
(random-float 0.0 1.0000000000000001 rnd)
双精度对您的案件有多重要?
你可以用整数表示clojure.core的 rand-int 例如:
rand-int
(rand-int 101)
(rand-int 1001)
我还注意到还有其他Clojure-Rand样式的函数,例如 random-sample 和 rand 如果 兰德int 不是你要找的,但你可能不需要退回给Java。
random-sample
rand
兰德int