[project @ 2000-03-09 13:33:01 by panne]
[ghc-hetmet.git] / ghc / lib / std / Random.lhs
index 0064315..2d61fc2 100644 (file)
@@ -36,12 +36,21 @@ import PrelRead             ( readDec )
 import PrelIOBase      ( unsafePerformIO, stToIO )
 import PrelArr         ( MutableVar, newVar, readVar, writeVar )
 import PrelReal                ( toInt )
-import CPUTime         ( getCPUTime )
 import PrelFloat       ( float2Double, double2Float )
 import Time            ( getClockTime, ClockTime(..) )
+#else
+import Prelude
+import privileged Prelude
+                       ( IORef
+                       , newIORef
+                       , readIORef
+                       , writeIORef
+                       , unsafePerformIO
+                       )
 #endif
 
-import Char ( isSpace, chr, ord )
+import CPUTime         ( getCPUTime )
+import Char            ( isSpace, chr, ord )
 \end{code}
 
 \begin{code}
@@ -184,7 +193,9 @@ instance Random Float where
 \begin{code}
 #ifdef __HUGS__
 mkStdRNG :: Integer -> IO StdGen
-mkStdRNG o = return (createStdGen o)
+mkStdRNG o = do
+    ct          <- getCPUTime
+    return (createStdGen (ct + o))
 #else
 mkStdRNG :: Integer -> IO StdGen
 mkStdRNG o = do
@@ -270,7 +281,7 @@ getStdGen :: IO StdGen
 getStdGen  = readIORef theStdGen
 
 theStdGen :: IORef StdGen
-theStdGen  = primRunST (newIORef (createStdGen 0))
+theStdGen  = unsafePerformIO (newIORef (createStdGen 0))
 
 #else