module Simulation.Aivika.Operation.Random
(newRandomUniformOperation,
newRandomUniformIntOperation,
newRandomTriangularOperation,
newRandomNormalOperation,
newRandomLogNormalOperation,
newRandomExponentialOperation,
newRandomErlangOperation,
newRandomPoissonOperation,
newRandomBinomialOperation,
newRandomGammaOperation,
newRandomBetaOperation,
newRandomWeibullOperation,
newRandomDiscreteOperation,
newPreemptibleRandomUniformOperation,
newPreemptibleRandomUniformIntOperation,
newPreemptibleRandomTriangularOperation,
newPreemptibleRandomNormalOperation,
newPreemptibleRandomLogNormalOperation,
newPreemptibleRandomExponentialOperation,
newPreemptibleRandomErlangOperation,
newPreemptibleRandomPoissonOperation,
newPreemptibleRandomBinomialOperation,
newPreemptibleRandomGammaOperation,
newPreemptibleRandomBetaOperation,
newPreemptibleRandomWeibullOperation,
newPreemptibleRandomDiscreteOperation) where
import Simulation.Aivika.Generator
import Simulation.Aivika.Event
import Simulation.Aivika.Process
import Simulation.Aivika.Process.Random
import Simulation.Aivika.Operation
newRandomUniformOperation :: Double
-> Double
-> Event (Operation a a)
newRandomUniformOperation :: forall a. Double -> Double -> Event (Operation a a)
newRandomUniformOperation =
forall a. Bool -> Double -> Double -> Event (Operation a a)
newPreemptibleRandomUniformOperation Bool
False
newRandomUniformIntOperation :: Int
-> Int
-> Event (Operation a a)
newRandomUniformIntOperation :: forall a. Int -> Int -> Event (Operation a a)
newRandomUniformIntOperation =
forall a. Bool -> Int -> Int -> Event (Operation a a)
newPreemptibleRandomUniformIntOperation Bool
False
newRandomTriangularOperation :: Double
-> Double
-> Double
-> Event (Operation a a)
newRandomTriangularOperation :: forall a. Double -> Double -> Double -> Event (Operation a a)
newRandomTriangularOperation =
forall a.
Bool -> Double -> Double -> Double -> Event (Operation a a)
newPreemptibleRandomTriangularOperation Bool
False
newRandomNormalOperation :: Double
-> Double
-> Event (Operation a a)
newRandomNormalOperation :: forall a. Double -> Double -> Event (Operation a a)
newRandomNormalOperation =
forall a. Bool -> Double -> Double -> Event (Operation a a)
newPreemptibleRandomNormalOperation Bool
False
newRandomLogNormalOperation :: Double
-> Double
-> Event (Operation a a)
newRandomLogNormalOperation :: forall a. Double -> Double -> Event (Operation a a)
newRandomLogNormalOperation =
forall a. Bool -> Double -> Double -> Event (Operation a a)
newPreemptibleRandomLogNormalOperation Bool
False
newRandomExponentialOperation :: Double
-> Event (Operation a a)
newRandomExponentialOperation :: forall a. Double -> Event (Operation a a)
newRandomExponentialOperation =
forall a. Bool -> Double -> Event (Operation a a)
newPreemptibleRandomExponentialOperation Bool
False
newRandomErlangOperation :: Double
-> Int
-> Event (Operation a a)
newRandomErlangOperation :: forall a. Double -> Int -> Event (Operation a a)
newRandomErlangOperation =
forall a. Bool -> Double -> Int -> Event (Operation a a)
newPreemptibleRandomErlangOperation Bool
False
newRandomPoissonOperation :: Double
-> Event (Operation a a)
newRandomPoissonOperation :: forall a. Double -> Event (Operation a a)
newRandomPoissonOperation =
forall a. Bool -> Double -> Event (Operation a a)
newPreemptibleRandomPoissonOperation Bool
False
newRandomBinomialOperation :: Double
-> Int
-> Event (Operation a a)
newRandomBinomialOperation :: forall a. Double -> Int -> Event (Operation a a)
newRandomBinomialOperation =
forall a. Bool -> Double -> Int -> Event (Operation a a)
newPreemptibleRandomBinomialOperation Bool
False
newRandomGammaOperation :: Double
-> Double
-> Event (Operation a a)
newRandomGammaOperation :: forall a. Double -> Double -> Event (Operation a a)
newRandomGammaOperation =
forall a. Bool -> Double -> Double -> Event (Operation a a)
newPreemptibleRandomGammaOperation Bool
False
newRandomBetaOperation :: Double
-> Double
-> Event (Operation a a)
newRandomBetaOperation :: forall a. Double -> Double -> Event (Operation a a)
newRandomBetaOperation =
forall a. Bool -> Double -> Double -> Event (Operation a a)
newPreemptibleRandomBetaOperation Bool
False
newRandomWeibullOperation :: Double
-> Double
-> Event (Operation a a)
newRandomWeibullOperation :: forall a. Double -> Double -> Event (Operation a a)
newRandomWeibullOperation =
forall a. Bool -> Double -> Double -> Event (Operation a a)
newPreemptibleRandomWeibullOperation Bool
False
newRandomDiscreteOperation :: DiscretePDF Double
-> Event (Operation a a)
newRandomDiscreteOperation :: forall a. DiscretePDF Double -> Event (Operation a a)
newRandomDiscreteOperation =
forall a. Bool -> DiscretePDF Double -> Event (Operation a a)
newPreemptibleRandomDiscreteOperation Bool
False
newPreemptibleRandomUniformOperation :: Bool
-> Double
-> Double
-> Event (Operation a a)
newPreemptibleRandomUniformOperation :: forall a. Bool -> Double -> Double -> Event (Operation a a)
newPreemptibleRandomUniformOperation Bool
preemptible Double
min Double
max =
forall a b. Bool -> (a -> Process b) -> Event (Operation a b)
newPreemptibleOperation Bool
preemptible forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Double -> Process ()
randomUniformProcess_ Double
min Double
max
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomUniformIntOperation :: Bool
-> Int
-> Int
-> Event (Operation a a)
newPreemptibleRandomUniformIntOperation :: forall a. Bool -> Int -> Int -> Event (Operation a a)
newPreemptibleRandomUniformIntOperation Bool
preemptible Int
min Int
max =
forall a b. Bool -> (a -> Process b) -> Event (Operation a b)
newPreemptibleOperation Bool
preemptible forall a b. (a -> b) -> a -> b
$ \a
a ->
do Int -> Int -> Process ()
randomUniformIntProcess_ Int
min Int
max
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomTriangularOperation :: Bool
-> Double
-> Double
-> Double
-> Event (Operation a a)
newPreemptibleRandomTriangularOperation :: forall a.
Bool -> Double -> Double -> Double -> Event (Operation a a)
newPreemptibleRandomTriangularOperation Bool
preemptible Double
min Double
median Double
max =
forall a b. Bool -> (a -> Process b) -> Event (Operation a b)
newPreemptibleOperation Bool
preemptible forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Double -> Double -> Process ()
randomTriangularProcess_ Double
min Double
median Double
max
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomNormalOperation :: Bool
-> Double
-> Double
-> Event (Operation a a)
newPreemptibleRandomNormalOperation :: forall a. Bool -> Double -> Double -> Event (Operation a a)
newPreemptibleRandomNormalOperation Bool
preemptible Double
mu Double
nu =
forall a b. Bool -> (a -> Process b) -> Event (Operation a b)
newPreemptibleOperation Bool
preemptible forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Double -> Process ()
randomNormalProcess_ Double
mu Double
nu
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomLogNormalOperation :: Bool
-> Double
-> Double
-> Event (Operation a a)
newPreemptibleRandomLogNormalOperation :: forall a. Bool -> Double -> Double -> Event (Operation a a)
newPreemptibleRandomLogNormalOperation Bool
preemptible Double
mu Double
nu =
forall a b. Bool -> (a -> Process b) -> Event (Operation a b)
newPreemptibleOperation Bool
preemptible forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Double -> Process ()
randomLogNormalProcess_ Double
mu Double
nu
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomExponentialOperation :: Bool
-> Double
-> Event (Operation a a)
newPreemptibleRandomExponentialOperation :: forall a. Bool -> Double -> Event (Operation a a)
newPreemptibleRandomExponentialOperation Bool
preemptible Double
mu =
forall a b. Bool -> (a -> Process b) -> Event (Operation a b)
newPreemptibleOperation Bool
preemptible forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Process ()
randomExponentialProcess_ Double
mu
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomErlangOperation :: Bool
-> Double
-> Int
-> Event (Operation a a)
newPreemptibleRandomErlangOperation :: forall a. Bool -> Double -> Int -> Event (Operation a a)
newPreemptibleRandomErlangOperation Bool
preemptible Double
beta Int
m =
forall a b. Bool -> (a -> Process b) -> Event (Operation a b)
newPreemptibleOperation Bool
preemptible forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Int -> Process ()
randomErlangProcess_ Double
beta Int
m
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomPoissonOperation :: Bool
-> Double
-> Event (Operation a a)
newPreemptibleRandomPoissonOperation :: forall a. Bool -> Double -> Event (Operation a a)
newPreemptibleRandomPoissonOperation Bool
preemptible Double
mu =
forall a b. Bool -> (a -> Process b) -> Event (Operation a b)
newPreemptibleOperation Bool
preemptible forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Process ()
randomPoissonProcess_ Double
mu
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomBinomialOperation :: Bool
-> Double
-> Int
-> Event (Operation a a)
newPreemptibleRandomBinomialOperation :: forall a. Bool -> Double -> Int -> Event (Operation a a)
newPreemptibleRandomBinomialOperation Bool
preemptible Double
prob Int
trials =
forall a b. Bool -> (a -> Process b) -> Event (Operation a b)
newPreemptibleOperation Bool
preemptible forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Int -> Process ()
randomBinomialProcess_ Double
prob Int
trials
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomGammaOperation :: Bool
-> Double
-> Double
-> Event (Operation a a)
newPreemptibleRandomGammaOperation :: forall a. Bool -> Double -> Double -> Event (Operation a a)
newPreemptibleRandomGammaOperation Bool
preemptible Double
kappa Double
theta =
forall a b. Bool -> (a -> Process b) -> Event (Operation a b)
newPreemptibleOperation Bool
preemptible forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Double -> Process ()
randomGammaProcess_ Double
kappa Double
theta
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomBetaOperation :: Bool
-> Double
-> Double
-> Event (Operation a a)
newPreemptibleRandomBetaOperation :: forall a. Bool -> Double -> Double -> Event (Operation a a)
newPreemptibleRandomBetaOperation Bool
preemptible Double
alpha Double
beta =
forall a b. Bool -> (a -> Process b) -> Event (Operation a b)
newPreemptibleOperation Bool
preemptible forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Double -> Process ()
randomBetaProcess_ Double
alpha Double
beta
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomWeibullOperation :: Bool
-> Double
-> Double
-> Event (Operation a a)
newPreemptibleRandomWeibullOperation :: forall a. Bool -> Double -> Double -> Event (Operation a a)
newPreemptibleRandomWeibullOperation Bool
preemptible Double
alpha Double
beta =
forall a b. Bool -> (a -> Process b) -> Event (Operation a b)
newPreemptibleOperation Bool
preemptible forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Double -> Process ()
randomWeibullProcess_ Double
alpha Double
beta
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomDiscreteOperation :: Bool
-> DiscretePDF Double
-> Event (Operation a a)
newPreemptibleRandomDiscreteOperation :: forall a. Bool -> DiscretePDF Double -> Event (Operation a a)
newPreemptibleRandomDiscreteOperation Bool
preemptible DiscretePDF Double
dpdf =
forall a b. Bool -> (a -> Process b) -> Event (Operation a b)
newPreemptibleOperation Bool
preemptible forall a b. (a -> b) -> a -> b
$ \a
a ->
do DiscretePDF Double -> Process ()
randomDiscreteProcess_ DiscretePDF Double
dpdf
forall (m :: * -> *) a. Monad m => a -> m a
return a
a