From fbb17ea7afcd7187297528846be0eae1c20d465d Mon Sep 17 00:00:00 2001
From: Joe Groff <arcata@gmail.com>
Date: Wed, 6 May 2009 17:26:21 -0500
Subject: [PATCH] uniform-random-float speed

---
 basis/random/random.factor | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/basis/random/random.factor b/basis/random/random.factor
index e3f1ecccb9..6b02c8a3e8 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.constants math.functions ;
+math.ranges math.constants math.functions accessors ;
 IN: random
 
 SYMBOL: system-random-generator
@@ -70,8 +70,11 @@ PRIVATE>
     secure-random-generator get swap with-random ; inline
 
 : uniform-random-float ( min max -- n )
-    64 random-bits >float [ over - 2.0 -64 ^ * ] dip
-    * + ;
+    4 random-bytes underlying>> *uint >float
+    4 random-bytes underlying>> *uint >float
+    2.0 32 ^ * +
+    [ over - 2.0 -64 ^ * ] dip
+    * + ; inline
 
 : normal-random-float ( mean sigma -- n )
     0.0 1.0 uniform-random-float