隨着Clojure,我該如何產生一個隨機的長號碼?我知道Clojure有一個rand-int
函數,但它只適用於整數。如果給定的數字是漫長的,我得到這個REPL錯誤:如果你看一看蘭特-INT源clojure的方式來產生一個隨機的長號碼
(defn rand-int
"Returns a random integer between 0 (inclusive) and n (exclusive)."
[n] (int (rand n)))
你可以做類似的事情
IllegalArgumentException Value out of range for int: 528029243649 clojure.lang.RT.intCast (RT.java:1205)
另一種隨機性源可以是依賴於OP的應用程序是個好主意,但它肯定是沒有必要只是爲了得到一個'long'。只需使用[j.u.Random]中的相應方法(https://docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextLong()) – amalloy
您是對的@amalloy。我會更新答案。 – Mars
自Java 8以來,還有['ThreadLocalRandom'](http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadLocalRandom.html),它具有更廣泛的方法選擇和不需要創建實例:'(.nextLong(java.util.concurrent.ThreadLocalRandom/current)528029243649)'。 – glts