Mercurial > lasercutter
comparison src/clojure/contrib/test_contrib/probabilities/examples_monte_carlo.clj @ 10:ef7dbbd6452c
added clojure source goodness
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 21 Aug 2010 06:25:44 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
9:35cf337adfcf | 10:ef7dbbd6452c |
---|---|
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
3 ;; | |
4 ;; Monte-Carlo application examples | |
5 ;; | |
6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
8 | |
9 (ns | |
10 #^{:author "Konrad Hinsen" | |
11 :skip-wiki true | |
12 :doc "Examples for monte carlo methods"} | |
13 clojure.contrib.probabilities.random.examples-monte-carlo | |
14 (:require [clojure.contrib.generic.collection :as gc]) | |
15 (:use [clojure.contrib.probabilities.random-numbers | |
16 :only (lcg rand-stream)]) | |
17 (:use [clojure.contrib.probabilities.finite-distributions | |
18 :only (uniform)]) | |
19 (:use [clojure.contrib.probabilities.monte-carlo | |
20 :only (random-stream discrete interval normal lognormal exponential | |
21 n-sphere | |
22 sample sample-sum sample-mean sample-mean-variance)] | |
23 :reload) | |
24 (:use [clojure.contrib.monads | |
25 :only (domonad state-m)])) | |
26 | |
27 ; Create a linear congruential generator | |
28 (def urng (lcg 259200 7141 54773 1)) | |
29 | |
30 ;; Use Clojure's built-in random number generator | |
31 ;(def urng rand-stream) | |
32 | |
33 ; Sample transformed distributions | |
34 (defn sample-distribution | |
35 [n rt] | |
36 (take n (gc/seq (random-stream rt urng)))) | |
37 | |
38 ; Interval [-2, 2) | |
39 (sample-distribution 10 (interval -2 2)) | |
40 ; Compare with a direct transformation | |
41 (= (sample-distribution 10 (interval -2 2)) | |
42 (map (fn [x] (- (* 4 x) 2)) (take 10 (gc/seq urng)))) | |
43 | |
44 ; Normal distribution | |
45 (sample-distribution 10 (normal 0 1)) | |
46 | |
47 ; Log-Normal distribution | |
48 (sample-distribution 10 (lognormal 0 1)) | |
49 | |
50 ; Exponential distribution | |
51 (sample-distribution 10 (exponential 1)) | |
52 | |
53 ; n-sphere distribution | |
54 (sample-distribution 10 (n-sphere 2 1)) | |
55 | |
56 ; Discrete distribution | |
57 (sample-distribution 10 (discrete (uniform (range 1 7)))) | |
58 | |
59 ; Compose distributions in the state monad | |
60 (def sum-two-dists | |
61 (domonad state-m | |
62 [r1 (interval -2 2) | |
63 r2 (normal 0 1)] | |
64 (+ r1 r2))) | |
65 | |
66 (sample-distribution 10 sum-two-dists) | |
67 | |
68 ; Distribution transformations | |
69 (sample-distribution 5 (sample 2 (interval -2 2))) | |
70 (sample-distribution 10 (sample-sum 10 (interval -2 2))) | |
71 (sample-distribution 10 (sample-mean 10 (interval -2 2))) | |
72 (sample-distribution 10 (sample-mean-variance 10 (interval -2 2))) | |
73 |