(defn shuffle
 [v [a & b :as r]]
 (if (seq r)
  (if (= 0 (rand-int 2))
   (recur (concat v [a]) b)
   (recur (concat [a] v) b))
  v))

(let [v (range 9000)
      v (shuffle [] v)]
 (doall v)
 nil)