Wie kann ich eine Lazy-Sequenz von Zufallszahlen erstellen?So erstellen Sie eine Lazy-Sequenz von Zufallszahlen in Clojure
My aktuellen Code:
(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)))
Ausführen es eine Ausnahme auslöst:
(Exception in thread "main" clojure.lang.ArityException: Falsche Anzahl von args (1) zu übergeben: Benutzer $ Zufallszahlen $ fn bei clojure.lang.AFn.throwArity (AFn.java:437) bei clojure.lang.AFn.invoke (AFn.java:39) bei clojure.core $ iterate $ fn_ 3870 .invozieren (core.clj: 2596) bei clojure.lang. LazySeq.sval (LazySeq.java:42) bei clojure.lang.LazySeq.seq (LazySeq.java:60) bei clojure.lang.RT.seq (RT.java:466) bei clojure.core $ seq. (core.clj: 133) aufrufen bei clojure.core nehmen $ $ fn _3836.invoke (core.clj: 2499) bei clojure.lang.LazySeq.sval (LazySeq.java:42) bei clojure.lang. LazySeq.seq (LazySeq.java:60) bei clojure.lang.Cons.next (Cons.java:39) bei clojure.lang.RT.next (RT.java:580) bei clojure.core $ nächste. Rufen Sie an (core.clj: 64) bei clojure.core $ nthnext.invoke (core.clj: 2752) bei clojure.core $ print_sequential.invoke (core_print.clj: 57) bei clojure.core $ fn__4990.invoke (core_print.clj: 140) bei clojure.lang.MultiFn.invoke (MultiFn.java:167) bei clojure.core $ pr_on.invoke (core.clj: 3264) bei clojure.core $ pr.invoke (core.clj: 3276) bei clojure.lang.AFn.applyToHelper (AFn.java:161) bei clojure.lang.RestFn.applyTo (RestFn.java:132) bei clojure.core $ apply.invoke (core.clj: 600) bei clojure. core $ prn.doInvoke (core.clj: 3309) bei clojure.lang.RestFn.applyTo (RestFn.java:137) bei clojure.core $ apply.invoke (core.clj: 600) bei clojure.core $ println.doInvoke (core.clj: 3329) bei clojure.lang.RestFn.invoke (RestFn.java:408) bei Benutzer $ eval7.invoke (testing.clj: 12) bei clojure.lang.Compiler.eval (Komp iter.java:6465) bei clojure.lang.Compiler.load (Compiler.java:6902) bei clojure.lang.Compiler.loadFile (Compiler.java:6863) bei clojure.main $ load_script.invoke (main. clj: 282) bei clojure.main $ script_opt.invoke (main.clj: 342) bei clojure.main $ main.doInvoke (main.clj: 426) bei clojure.lang.RestFn.invoke (RestFn.java: 408) bei clojure.lang.Var.invoke (Var.java:401) bei clojure.lang.AFn.applyToHelper (AFn.java:161) bei clojure.lang.Var.applyTo (Var.java:518) bei clojure.main.main (main.java:37) [Fertig in 3.8s mit Exitcode 1]
Ist dies ein völlig falscher Ansatz, weil ich Zustand verwende, nämlich r ist eine Instanz von java.util.Random, oder ist es nur ein Nooby Syntaxfehler?
Ich studiere nur clojure auf mich, also bitte bare mit mir :).
Vielen Dank für die ganze stacktrace einschließlich. Hier ist es nicht wirklich notwendig, aber es kann immens helfen und oft stören die Leute nicht. – amalloy