From 3e67e571cdd7225cc5d41301a315aed01c53f7ab Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Wed, 6 May 2009 13:22:53 -0500 Subject: [PATCH] uniform and normal distributed random floats. uniform is done the lame way for now --- basis/random/random.factor | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/basis/random/random.factor b/basis/random/random.factor index d972e1e7ac..e3f1ecccb9 100755 --- a/basis/random/random.factor +++ b/basis/random/random.factor @@ -3,7 +3,7 @@ USING: alien.c-types kernel math namespaces sequences io.backend io.binary combinators system vocabs.loader summary math.bitwise byte-vectors fry byte-arrays -math.ranges ; +math.ranges math.constants math.functions ; IN: random SYMBOL: system-random-generator @@ -69,6 +69,17 @@ PRIVATE> : with-secure-random ( quot -- ) secure-random-generator get swap with-random ; inline +: uniform-random-float ( min max -- n ) + 64 random-bits >float [ over - 2.0 -64 ^ * ] dip + * + ; + +: normal-random-float ( mean sigma -- n ) + 0.0 1.0 uniform-random-float + 0.0 1.0 uniform-random-float + [ 2 pi * * cos ] + [ 1.0 swap - log -2.0 * sqrt ] + bi* * * + ; + USE: vocabs.loader {