A common analytic task is the monte carlo simulation. This involves sampling large numbers of random values in order to come to some kind of conclusion. Random numbers are often thought of as a weak point in purely functional languages. In a purely functional language like Haskell, we keep a strict separation between pure and impure functions. Since by its very nature, a function generating a rand