我想知道如何在 Clojure 中包含随机数。我想出了这个:
(import java.util.Random)
(def rnd
(Random.))
(defn random-float
[min max rnd]
(+ min (* (.nextDouble rnd) (- max min))))
Java 似乎只有包含/排除随机函数。根据文档:
The general contract of nextDouble is that one double value, chosen (approximately) uniformly from the range 0.0d (inclusive) to 1.0d (exclusive), is pseudorandomly generated and returned.
有没有办法获得此函数的包含/包含版本。我正在考虑稍微增加最大值(0.0000000000000001)。不确定如果这样做会产生什么影响。
这行得通吗?
(random-float 0.0 1.0000000000000001 rnd)
最佳答案
double 对于您的情况有多重要?
您可以使用 clojure.core 的 rand-int
的整数来表示所有内容,例如:
- 对于 0-100 之间的数字:
(rand-int 101)
- 对于 0-1000 之间的数字:
(rand-int 1001)
- 等等
我还注意到还有其他 Clojure rand 风格的函数,例如 random-sample
和 rand
;如果 rand-int
不是您正在寻找的,您可能仍然不需要回退到 Java。
关于java - 如何在 Clojure 中实现全包随机数函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54040695/