(def SEHEULT []) (defn new-seheult ([x y sd] (new-seheult x y sd 1.5181932)) ([x y sd mu] (new-seheult x y sd mu 0.0036737733)) ([x y sd mu tau] (let [l (/ sd tau) ll (* l l) u (/ (- x y) (* sd (Math/sqrt 2))) z (* 0.5 (+ x y)) v (/ (- z mu) (* tau (Math/pow (+ 1 (* 0.5 ll)) 0.5))) factor (* (/ (+ 1 ll) (* l (Math/pow (+ 2 ll) 0.5))) (Math/exp (* (/ -1 (* 2 (+ 1 ll))) (- (* u u) (* v v)))))] factor))) (defn new-random-seheult ([] (new-random-seheult 1 1.5200 1.5400 1 1 1.5181932 15.181932 0.0036737733 0.036737733)) ([samples] (new-random-seheult 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] (new-random-seheult 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 (new-seheult x y sd mu tau) new-lr (if (>= lr 10) 10 0)] (def SEHEULT (conj SEHEULT [x y new-lr]))))) (let [result SEHEULT] (def SEHEULT []) result)))