Java 如何在Clojure中实现全包随机数函数?
我想知道如何在Clojure中包含随机数。我想到了这个:Java 如何在Clojure中实现全包随机数函数?,java,random,clojure,Java,Random,Clojure,我想知道如何在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范围内均匀分布 (独占),是伪随机生成并返回的
(import java.util.Random)
(def rnd
(Random.))
(defn random-float
[min max rnd]
(+ min (* (.nextDouble rnd) (- max min))))
Java似乎只有包含/排除的随机函数。根据文件:
nextDouble的总合同是选择一个双倍值
(大约)在0.0d(含)到1.0d范围内均匀分布
(独占),是伪随机生成并返回的
是否有办法获得此函数的包含/包含版本。我在考虑用一点点(0.00000000000000001)来增加最大值。不确定如果我这样做会产生什么影响
这样行吗
(random-float 0.0 1.0000000000000001 rnd)
双精度对您的案例有多重要 在clojure.core的
rand int
中,您可以对所有内容使用整数,例如:
- 对于0-100之间的数字:
(rand int 101)
- 对于0-1000之间的数字:
(rand int 1001)
- 等
我还注意到还有其他Clojure-rand风格的函数,比如
random sample
和rand
;如果rand int
不是您想要的,那么您可能不需要退回到Java。这里有一篇关于Java的Random行为的有趣文章。下一篇文章是double
:。我认为在实践中,你不太可能得到一个触及边界的随机double
值,因此上界是否是独占的/包含的可能不会对你所做的事情产生影响。为什么。。。。。。。。。。。。。。。。。。。。。。。。