-----------------------------------------------------------------------------
-- |
-- Module      : Data.Array.Parallel.Unlifted.Sequential.Flat.Random
-- Copyright   : (c) 2006 Roman Leshchinskiy
-- License     : see libraries/ndp/LICENSE
-- 
-- Maintainer  : Roman Leshchinskiy <rl@cse.unsw.edu.au>
-- Stability   : internal
-- Portability : portable
--
-- Description ---------------------------------------------------------------
--
--  Random generation of flat unlifted arrays.
--
-- Todo ----------------------------------------------------------------------
--

{-# LANGUAGE CPP #-}

#include "fusion-phases.h"

module Data.Array.Parallel.Unlifted.Sequential.Flat.Random
where

import Data.Array.Parallel.Stream (
  randomS, randomRS)
import Data.Array.Parallel.Unlifted.Sequential.Flat.UArr (
  UA, UArr)
import Data.Array.Parallel.Unlifted.Sequential.Flat.Stream (
  unstreamU)

import System.Random

randomU :: (UA a, Random a, RandomGen g) => Int -> g -> UArr a
{-# INLINE_U randomU #-}
randomU n = unstreamU . randomS n

randomRU :: (UA a, Random a, RandomGen g) => Int -> (a,a) -> g -> UArr a
{-# INLINE_U randomRU #-}
randomRU n r = unstreamU . randomRS n r