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