java - 如何在 Clojure 中实现全包随机数函数?

标签 java random clojure

我想知道如何在 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-samplerand ;如果 rand-int 不是您正在寻找的,您可能仍然不需要回退到 Java。

关于java - 如何在 Clojure 中实现全包随机数函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54040695/

相关文章:

java - 单链表和双向链表 (Java)

java - mariadb: jdbc: setTimestamp 截断毫秒

math - 创建一个随机序列,跳到序列的任何部分

java - Android - 随机不起作用

clojure - 惰性序列中的 OutOfMemoryError

java - 在 clojure 中动态生成高性能函数

Java-从字符串中最后第二次出现的字符中获取子字符串

java - Eclipse 为什么以及何时将 Maven 依赖项放在 CLASSPATH 中而不是 MODULEPATH 中?

C:最大数,输出错误。兰德()

clojure - Clojure 1.4 上的棱柱模式?