Skip to content

Instantly share code, notes, and snippets.

@micmarsh
Created October 7, 2016 18:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save micmarsh/061c9f38407ea411965742eeb4215349 to your computer and use it in GitHub Desktop.
Save micmarsh/061c9f38407ea411965742eeb4215349 to your computer and use it in GitHub Desktop.
Utilities that I always end up implementing in an exploratory phase, before deciding that test.check is better
(defn rand-int'
([seed] (rand-int' seed Integer/MAX_VALUE))
([seed upper] (rand-int' seed 0 upper))
([seed upper min]
(-> (hash seed)
(Math/abs)
(mod (- upper min))
(+ min)
(dec))))
(defn rand-element
([vector] (rand-element vector vector))
([seed vector]
(when-not (empty? vector)
(let [upper (count vector)]
(get vector (rand-int' seed upper))))))
(defn seed-seq [seed]
(lazy-seq
(let [element (rand-int' seed)]
(cons element (seed-seq element)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment