packages feed

random-1.2.0: test/Spec/Run.hs

module Spec.Run (runsEqual) where

import Data.Word (Word64)
import System.Random.Stateful

runsEqual :: RandomGen g => g -> IO Bool
runsEqual g = do
  let pureResult = runStateGen_ g uniformM :: Word64
      stResult = runSTGen_ g uniformM :: Word64
  ioGenM <- newIOGenM g
  ioResult <- uniformM ioGenM
  atomicGenM <- newAtomicGenM g
  atomicResult <- uniformM atomicGenM
  return $ all (pureResult ==) [stResult, ioResult, atomicResult]