Avi Drucker / May 12 2021
Remix of Clojure by
Nextjournal
Randomness in Clojure
{:deps {org.clojure/clojure {:mvn/version "1.10.1"} ;; complient is used for autocompletion ;; add your libs here (and restart the runtime to pick up changes) compliment/compliment {:mvn/version "0.3.9"}}}deps.edn
Extensible Data Notation
{:hello (clojure-version)}0.1s
Clojure
Random 101
Skill: Generate a random integer with zero minimum
;; get a random integer from 0 to 9(rand-int 10)0.0s
Clojure
;; a list of random integers(repeatedly 5 (rand-int 10));; same effect as above: (take 5 (repeatedly #(rand-int 10)));; source: https://clojuredocs.org/clojure.core/repeatedly0.0s
Clojure
Skill: Generate a random integer with an arbitrary minimum
(defn rand-int-min-max "max here is inclusive" [min max] (+ min (rand-int max)))0.0s
Clojure
;; generate 5 random numbers ranging from 1 to 20 (inclusive)(repeatedly 5 (rand-int-min-max 1 20))0.0s
Clojure
Exercise: Create a "x-rolls-d-sides" function a la "D20"
(defn die-rolls-sides [rolls sides] (repeatedly rolls (rand-int-min-max 1 sides)))0.0s
Clojure
;; 3d6(def roll-x (die-rolls-sides 3 6))0.0s
Clojure
Skill: Create a random decimal number between 0 and 1 (exclusive).
(rand)0.0s
Clojure
(repeatedly 10 rand)0.0s
Clojure
Confirm that (rand) never returns 1
;; source: docs: https://clojuredocs.org/clojure.core/rand#example-542692c8c026201cdc326a0f(some (partial <= 10) (take 100000 (repeatedly (fn [] (int (rand 10))))))0.6s
Clojure
Exercise: Write function that return a random number of X precision between 0 and 1 (exclusive)
(defn rand-float-precision [precision] (/ (Math/floor (* (Math/pow 10 precision) (rand))) (Math/pow 10 precision)))0.1s
Clojure
(repeatedly 10 (rand-float-precision 2))0.0s
Clojure