Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Random 如何生成相同的伪随机整数序列?_Random_Clojure - Fatal编程技术网

Random 如何生成相同的伪随机整数序列?

Random 如何生成相同的伪随机整数序列?,random,clojure,Random,Clojure,在Clojure中生成相同的伪随机整数序列或多或少有标准的解决方案吗 我知道随机化的三个标准函数:,和,但它们似乎没有提供任何“设置”其内部状态的方法 (defn randomish [seed] (repeatedly (let [gen (java.util.Random. seed)] (fn [] (.nextInt gen))))) (take 5 (randomish 10)) ;(-1157793070 1913984760 1107254586 1773

在Clojure中生成相同的伪随机整数序列或多或少有标准的解决方案吗

我知道随机化的三个标准函数:,和,但它们似乎没有提供任何“设置”其内部状态的方法

(defn randomish [seed]
  (repeatedly
    (let [gen (java.util.Random. seed)]
      (fn [] (.nextInt gen)))))

(take 5 (randomish 10))
;(-1157793070 1913984760 1107254586 1773446580 254270492)

(take 5 (randomish 10))
;(-1157793070 1913984760 1107254586 1773446580 254270492)
随机地,反复地

捕获函数 它捕获随机对象 保持可变内部状态的 由种子初始化。 对randomish的每次调用都会生成一个包含唯一随机对象的新序列对象。但是具有相同种子的随机对象产生相同的序列

如果以上是错误的,请纠正我。这条路似乎很难走

在Clojure中,最好是调用.nextLong而不是nextInt

根据请求,适用于处理可选的独占限制:

(defn randomish
  ([seed]
    (repeatedly
      (let [gen (java.util.Random. seed)]
        (fn [] (.nextInt gen)))))
  ([seed limit]
    (repeatedly
      (let [gen (java.util.Random. seed)]
        (fn [] (.nextInt gen limit))))))
。。。生产

(take 5 (randomish 10 100))
;(13 80 93 90 46)

(take 5 (randomish 10 100))
;(13 80 93 90 46)
随机地,反复地

捕获函数 它捕获随机对象 保持可变内部状态的 由种子初始化。 对randomish的每次调用都会生成一个包含唯一随机对象的新序列对象。但是具有相同种子的随机对象产生相同的序列

如果以上是错误的,请纠正我。这条路似乎很难走

在Clojure中,最好是调用.nextLong而不是nextInt

根据请求,适用于处理可选的独占限制:

(defn randomish
  ([seed]
    (repeatedly
      (let [gen (java.util.Random. seed)]
        (fn [] (.nextInt gen)))))
  ([seed limit]
    (repeatedly
      (let [gen (java.util.Random. seed)]
        (fn [] (.nextInt gen limit))))))
。。。生产

(take 5 (randomish 10 100))
;(13 80 93 90 46)

(take 5 (randomish 10 100))
;(13 80 93 90 46)

只是想为仍在寻找的人添加,自2015年起clojars上就有这样的库:

只是想为仍在寻找的人添加,自2015年起clojars上就有这样的库:

可能重复的@jornsharpe的可能重复,实际上它似乎是重复的,但引用的问题无论如何都没有像样的答案。@jbr,我的问题甚至没有提到*rnd*或类似的东西,这个问题更具体。@Mark,亚历克斯的答案不正是你想要的吗?可能是@jornsharpe的复制品,确实似乎是复制品,但引用的问题无论如何都没有像样的答案。@jbr,我的问题甚至没有提到*rnd*或类似的东西,这个问题更具体。@Mark,Alex的答案不正是你想要的吗?答案很好!令人困惑的是,这样的东西不是标准clojure的一部分library@Ezequiel谢谢如果哈斯克尔就是这样做的,我也不会感到惊讶。序列是随机数发生器的良好模型。如果你能像这样插入随机性,你就可以单独正确地测试它所驱动的东西。回答得很好!令人困惑的是,这样的东西不是标准clojure的一部分library@Ezequiel谢谢如果哈斯克尔就是这样做的,我也不会感到惊讶。序列是随机数发生器的良好模型。如果你能像这样插入随机性,你可以单独正确地测试它驱动的东西。