------------------------------------------------------------------------
-- The Agda standard library
--
-- Unsafe operations over linear congruential pseudo random generators
-- for natural numbers
-- /!\ NB: LCGs must not be used for cryptographic applications
------------------------------------------------------------------------

{-# OPTIONS --cubical-compatible --sized-types #-}

open import Codata.Sized.Stream using (Stream; unfold)
open import Data.Nat.PseudoRandom.LCG using (Generator; step)
open import Data.Nat.Base using ()
open import Data.Product.Base using (<_,_>)
open import Function.Base using (id)

module Data.Nat.PseudoRandom.LCG.Unsafe where

------------------------------------------------------------------------
-- An infinite stream of random numbers

stream : Generator    Stream  _
stream gen = unfold < step gen , id >