¿Cómo puedo crear una secuencia diferida de números aleatorios?Cómo crear una secuencia perezosa de números aleatorios en clojure
Mi código actual:
(import '(java.util Random))
(def r (new Random))
(defn rnd [_]
(.nextInt r 10))
(defn random-numbers [max]
(iterate #(.nextInt r max) (.nextInt r max)))
(println (take 5 (random-numbers 10)))
ejecución lanza una excepción:
(Excepción en hilo clojure.lang.ArityException "principal": Número incorrecto de argumentos (1) pasan a: usuario $ random-numbers $ fn en clojure.lang.AFn.throwArity (AFn.java:437) en clojure.lang.AFn.invoke (AFn.java:39) en clojure.core $ iterate $ fn_ 3870 .invoke (core.clj: 2596) en clojure.lang. LazySeq.sval (LazySeq.java:42) en clojure.lang.LazySeq.seq (LazySeq.java:60) en clojure.lang.RT.seq (RT.java:466) en clojure.core $ seq. invoke (core.clj: 133) en clojure.core $ take $ fn _3836.invoke (core.clj: 2499) en clojure.lang.LazySeq.sval (LazySeq.java:42) en clojure.lang. LazySeq.seq (LazySeq.java:60) en clojure.lang.Cons.next (Cons.java:39) en clojure.lang.RT.next (RT.java:580) en clojure.core $ next. invoke (core.clj: 64) en clojure.core $ nthnext.invoke (core.clj: 2752) en clojure.core $ print_sequential.invoke (core_print.clj: 57) en clojure.core $ fn__4990.invoke (core_print.clj: 140) en clojure.lang.MultiFn.invoke (MultiFn.java:167) en clojure.core $ pr_on.invoke (core.clj: 3264) en clojure.core $ pr.invoke (core.clj: 3276) en clojure.lang.AFn.applyToHelper (AFn.java:161) en clojure.lang.RestFn.applyTo (RestFn.java:132) en clojure.core $ apply.invoke (core.clj: 600) en clojure. core $ prn.doInvoke (core.clj: 3309) en clojure.lang.RestFn.applyTo (RestFn.java:137) en clojure.core $ apply.invoke (core.clj: 600) en clojure.core $ println.doInvoke (core.clj: 3329) en clojure.lang.RestFn.invoke (RestFn.java:408) en el usuario $ eval7.invoke (testing.clj: 12) en clojure.lang.Compiler.eval (Comp iler.java:6465) en clojure.lang.Compiler.load (Compiler.java:6902) en clojure.lang.Compiler.loadFile (Compiler.java:6863) en clojure.main $ load_script.invoke (main. clj: 282) en clojure.main $ script_opt.invoke (main.clj: 342) en clojure.main $ main.doInvoke (main.clj: 426) en clojure.lang.RestFn.invoke (RestFn.java: 408) en clojure.lang.Var.invoke (Var.java:401) en clojure.lang.AFn.applyToHelper (AFn.java:161) en clojure.lang.Var.applyTo (Var.java:518) en clojure.main.main (main.java:37) [Terminado en 3.8s con código de salida 1]
¿Es este un enfoque completamente erróneo, porque estoy usando el estado, es decir, r es una instancia de java.util.Random, o es simplemente un error de sintaxis nooby?
Acabo de estudiar clojure en mí mismo, así que por favor desnudo conmigo :).
Gracias por incluir toda la StackTrace. Aquí no es realmente necesario, pero puede ayudar inmensamente y, a menudo, la gente no se molesta. – amalloy