hsc3-lang-0.12: Haskell SuperCollider Language

Safe HaskellNone

Sound.SC3.Lang.Random.Monad

Description

Rand monad based sclang random number functions.

Synopsis

Documentation

rand :: (RandomGen g, Random n, Num n) => n -> Rand g nSource

SimpleNumber.rand is getRandomR in (0,n).

 evalRand (replicateM 2 (rand (10::Int))) (mkStdGen 6) == [5,8]
 evalRand (rand (1::Double)) (mkStdGen 6) == 0.21915126172825694

nrand :: (RandomGen g, Random n, Num n) => Int -> n -> Rand g [n]Source

Variant of rand generating k values.

 evalRand (nrand 3 10) (mkStdGen 6) == [5,8,1]

rand2 :: (RandomGen g, Random n, Num n) => n -> Rand g nSource

SimpleNumber.rand2 is getRandomR in (-n,n).

 evalRand (replicateM 2 (rand2 10)) (mkStdGen 5) == [7,-6]

nrand2 :: (RandomGen g, Random n, Num n) => Int -> n -> Rand g [n]Source

Variant of rand2 generating k values.

 evalRand (nrand2 3 10) (mkStdGen 5) == [7,-6,9]

rrand :: (RandomGen g, Random n, Num n) => n -> n -> Rand g nSource

SimpleNumber.rrand is curry getRandomR.

 evalRand (replicateM 2 (rrand 3 9)) (mkStdGen 1) == [5,8]

nrrand :: (RandomGen g, Random n, Num n) => Int -> n -> n -> Rand g [n]Source

Variant of rrand generating k values.

 evalRand (nrrand 4 3 9) (mkStdGen 1) == [5,8,9,6]

choose :: RandomGen g => [a] -> Rand g aSource

SequenceableCollection.choose selects an element at random.

 evalRand (choose [3..9]) (mkStdGen 1) == 5

nchoose :: RandomGen g => Int -> [a] -> Rand g [a]Source

Variant of choose generating k values.

 evalRand (nchoose 4 [3..9]) (mkStdGen 1) == [5,8,9,6]

exprand :: (Floating n, Random n, RandomGen g) => n -> n -> Rand g nSource

SimpleNumber.exprand generates exponentially distributed random number in the given interval.

 let r = replicateM 3 (exprand 10 100 >>= return.floor)
 in evalRand r (mkStdGen 1) == [22,21,13]

nexprand :: (Floating n, Random n, RandomGen g) => Int -> n -> n -> Rand g [n]Source

Variant of exprand generating k values.

 let r = nexprand 3 10 100 >>= return . map floor
 in evalRand r (mkStdGen 1) == [22,21,13]