]> gitweb.factorcode.org Git - factor.git/commitdiff
random: adding triangular distribution.
authorJohn Benediktsson <mrjbq7@gmail.com>
Sat, 31 Mar 2012 02:53:30 +0000 (19:53 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Sat, 31 Mar 2012 02:53:30 +0000 (19:53 -0700)
basis/random/random.factor

index 59a83e3305c5b53daa2c52c2aeaa49e2522ba991..4c6943724442a38fa5e2f1af98e2f30fe390d446 100644 (file)
@@ -215,6 +215,16 @@ ERROR: too-many-samples seq n ;
         mu 2pi mod _f cos random-unit 0.5 > [ + ] [ - ] if
     ] if ;
 
+:: (triangular-random-float) ( low high mode -- n )
+    mode low - high low - / :> c!
+    random-unit :> u!
+    high low
+    u c > [ 1. u - u! 1. c - c! swap ] when
+    [ - u c * sqrt * ] keep + ;
+
+: triangular-random-float ( low high -- n )
+    2dup + 2 /f (triangular-random-float) ;
+
 {
     { [ os windows? ] [ "random.windows" require ] }
     { [ os unix? ] [ "random.unix" require ] }