(def GROVE []) (defn grove ([x y sd] (grove x y sd 1.5181932 0.0036737733)) ([x y sd mu tau] (let [u (/ tau sd) v (/ (* (- x y)(- x y) ) (* -4 sd sd)) w (/ (* (- y mu)(- y mu) ) (* 2 tau tau)) lr (* u (Math/exp ( + v w )))] lr))) (defn random-grove ([] (random-grove 1 1.5200 1.5400 1 1 1.5181932 15.181932 0.0036737733 0.036737733)) ([samples] (random-grove samples 1.5200 1.5400 1 1 1.5181932 15.181932 0.0036737733 0.036737733)) ([min-x max-x min-sd max-sd min-mu max-mu min-tau max-tau] (random-grove 1 min-x max-x min-sd max-sd min-mu max-mu min-tau max-tau)) ([samples min-x max-x min-sd max-sd min-mu max-mu min-tau max-tau] (dotimes [stdev1 (+ (- max-sd min-sd) 1)] (dotimes [one samples] (let [x (nr min-x max-x) y (nr min-x max-x) sd (* (+ stdev1 1) (Math/pow 10 -5)) mu (nr min-mu max-mu) tau (nr min-tau max-tau) lr (grove x y sd mu tau) new-lr (if (>= lr 10) 10 0)] (def GROVE (conj GROVE [x y new-lr]))))) (let [result GROVE] (def GROVE []) ;reset result)))