Java 如何在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范围内均匀分布 (独占),是伪随机生成并返回的

我想知道如何在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范围内均匀分布 (独占),是伪随机生成并返回的

是否有办法获得此函数的包含/包含版本。我在考虑用一点点(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
值,因此上界是否是独占的/包含的可能不会对你所做的事情产生影响。为什么。。。。。。。。。。。。。。。。。。。。。。。。