我在Clojure中编写了一些函数来充当帮助者。现在,我正在编写使用Java随机生成器更容易使用的函数。
由于random-float
和random-double
几乎完全相同,除了调用的确切Java函数之外,我决定尝试分解相同的部分并使用结果函数:
(import '[java.util Random])
(defn- random-floating [f min max ^Random rand-gen]
(let [r (f rand-gen)
spread (- max min)
rand (* spread r)]
(+ rand min)))
; Errors at ".nextFloat" and ".nextDouble"
(defn random-float [min max ^Random rand-gen]
(random-floating .nextFloat min max rand-gen))
(defn random-double [min max ^Random rand-gen]
(random-floating .nextDouble min max rand-gen))
(defn random-boolean [rand-gen]
(.nextBoolean rand-gen)) ; <<--- This works fine
问题是,我得到了未解决的符号&#34; .nextFloat
和.nextDouble
上的错误,即使我直接调用它们,也会找到它们。
我尝试过限定他们(Random/.nextFloat
和java.util.Random/.nextFloat
),但都没有效果。