[Haskell-beginners] Generating Random Float
MAN
elviotoccalino at gmail.com
Fri Apr 23 11:23:14 EDT 2010
Works great here...
Using ghci:
Prelude> :m + Random
Prelude Random> let rand :: (Num a,Random a) => IO a; rand = newStdGen
>>= return . fst . randomR (0,1)
Prelude Random> rand :: IO Int
1
Prelude Random> rand :: IO Int
1
Prelude Random> rand :: IO Int
1
Prelude Random> rand :: IO Int
1
Prelude Random> rand :: IO Int
0
Prelude Random> rand :: IO Double
0.6897753065428174
Prelude Random> rand :: IO Float
0.6159074
Prelude Random>
El vie, 23-04-2010 a las 15:33 +0200, Giorgio Stefanoni escribió:
> Hi guys,
>
> I'm working with Haskell for a little project at the university and
> I'm stuck with a problem.
>
> I'm trying to generate a random number in the interval [0.0,1.0]. It
> is straightforward for me to implement the function on ints:
>
> rand :: IO Int
> rand = do r <- newStdGen
> let (x1, r2) = randomR (0,1) r
>
> print x1
> return x1
>
>
> However, if I try to generate a Float instead, I always get an
> Arithmetic Overflow error that I can not understand.
>
> Code:
> rand :: IO Float
> rand = do r <- newStdGen
> let (x1, r2) = randomR (0.0::Float,1.0::Float) r
>
> print x1
> return x1
>
>
> Do you have any clue why this happens?
>
> Thanks in advance,
>
>
> --
> Giorgio
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
More information about the Beginners
mailing list