[EMAIL PROTECTED] (Ketil Z. Malde) writes:
<snip OP> > > Depending on why you need random numbers, you might want to consider > using a fixed seed, i.e. > > a = randoms (mkStdGen 4711) > > will get you a sequence of "random" numbers. Of course, it will be > the same sequence for every run of your program, but in some cases, > (when you only want arbitrary data, and not necessarily random) this > won't matter much. > > The advantage is, of course, that you get rid of the IO monad. I've > toyed with the idea of using unsafePerformIO (at least to get the > seed), but haven't quite dared (or needed) to yet. :-) > well, thanks to all for the help. in my case, it was not OK to have arbitrary data, i needed (pseudo-) random numbers for different runs of the program. i want to: -generate random Ints -do some arbitrary computations on them to generate a [[Int]] -compare each [Int] in the list with a list of [Int] known at compile time the functions below seem to be doing what i need; i'm posting the code in case it helps other newbies get there a bit faster than i did. any constructive criticism / pointing out of errors most welcome. code: > import Random > rollDice :: IO Int > rollDice = getStdRandom (randomR (1,6)) > getRandomSeed :: IO Int > getRandomSeed = do > retval <- rollDice > return retval > getRandomSeedInt :: IO Int -> Int > getRandomSeedInt x = unsafePerformIO x > getARange :: Int -> Int -> [Int] > getARange x y = randomRs (x,y) (mkStdGen (getRandomSeedInt getRandomSeed)) > getRandomInt :: Int -> Int > getRandomInt x = head (take 1 (getARange 0 x )) output: Main> take 20 (getARange 0 10) [5,8,1,8,2,8,9,7,1,4,6,2,5,8,6,2,10,0,7,10] Main> take 20 (getARange 0 10) [9,8,9,9,7,2,4,5,1,7,2,2,8,2,5,10,5,3,1,8] thanks and regards, peter _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe
