hsc3-lang-0.15: Haskell SuperCollider Language

Safe HaskellNone
LanguageHaskell98

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 n Source

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 n Source

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 n Source

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 a Source

SequenceableCollection.choose selects an element at random.

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

wchoose :: (RandomGen g, Fractional t, Ord t, Random t) => [a] -> [t] -> Rand g a Source

wchoose_N :: (RandomGen g, Fractional t, Ord t, Random t) => [a] -> [t] -> Rand g a Source

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 n Source

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]