代码之家  ›  专栏  ›  技术社区  ›  Istvan

如何在Clojure中实现一个全包随机数函数?

  •  0
  • Istvan  · 技术社区  · 6 年前

    我想知道在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范围内均匀分布 (exclusive),伪随机生成并返回。

    是否有方法拥有此函数的包含/包含版本?我在考虑用一点点(0.0000000000000001)来增加最大值。不知道如果我这样做会有什么影响。

    这行吗?

    (random-float 0.0 1.0000000000000001 rnd)
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   rafaelzlisboa    6 年前

    双精度对您的案件有多重要?

    你可以用整数表示clojure.core的 rand-int 例如:

    • 对于0-100之间的数字: (rand-int 101)
    • 对于0-1000之间的数字: (rand-int 1001)

    我还注意到还有其他Clojure-Rand样式的函数,例如 random-sample rand 如果 兰德int 不是你要找的,但你可能不需要退回给Java。

    推荐文章