   "Returns a random floating point number between 0 (inclusive) and
   n (default 1) (exclusive)."
   ([] (rand 1))
-  ([n] (js* "Math.random() * ~{n}")))
+  ([n] (* (Math/random) n)))
 
 (defn rand-int
   "Returns a random integer between 0 (inclusive) and n (exclusive)."
-  [n] (js* "Math.floor(Math.random() * ~{n})"))
+  [n] (Math/floor (* (Math/random) n)))
 
 (defn rand-nth
   "Return a random element of the (sequential) collection. Will have

  (-hash [this] (goog.getUid this)))

(set! cljs.core.MultiFn.prototype.call
      (fn [_ & args] (-dispatch (js* "this") args)))

(set! cljs.core.MultiFn.prototype.apply
      (fn [_ args] (-dispatch (js* "this") args)))

(defn remove-all-methods
  "Removes all of the methods of multimethod."

                   init)]
        (if (reduced? init)
          @init
          (let [init (if-not (nil? (.-right node))
                       (tree-map-kv-reduce (.-right node) f init)
                       init)]
            (if (reduced? init)
