Safe Haskell | None |
---|---|
Language | Haskell98 |
RandomGen
based sclang
random number functions.
- rand :: (RandomGen g, Random n, Num n) => n -> g -> (n, g)
- r_iterate :: (t -> (a, t)) -> t -> [a]
- mk_kvariant :: r -> (t -> r -> r) -> (r -> r') -> Int -> (g -> (t, g)) -> g -> (r', g)
- kvariant :: Int -> (g -> (a, g)) -> g -> ([a], g)
- kvariant' :: Int -> (g -> (a, g)) -> g -> ([a], g)
- nrand :: (RandomGen g, Random n, Num n) => Int -> n -> g -> ([n], g)
- s_rand :: (RandomGen g, Random n, Num n) => n -> g -> [n]
- rand2 :: (RandomGen g, Random n, Num n) => n -> g -> (n, g)
- s_rand2 :: (RandomGen g, Random n, Num n) => n -> g -> [n]
- nrand2 :: (RandomGen g, Random a, Num a) => Int -> a -> g -> ([a], g)
- rrand :: (Random n, RandomGen g) => n -> n -> g -> (n, g)
- nrrand :: (RandomGen g, Random a, Num a) => Int -> a -> a -> g -> ([a], g)
- choose :: RandomGen g => [a] -> g -> (a, g)
- nchoose :: RandomGen g => Int -> [a] -> g -> ([a], g)
- exprand :: (Floating n, Random n, RandomGen g) => n -> n -> g -> (n, g)
- nexprand :: (Floating n, Random n, RandomGen g) => Int -> n -> n -> g -> ([n], g)
- coin :: (RandomGen g, Random a, Ord a, Fractional a) => a -> g -> (Bool, g)
- ncoin :: (RandomGen g, Random a, Ord a, Fractional a) => Int -> a -> g -> ([Bool], g)
- scramble :: RandomGen g => [t] -> g -> ([t], g)
- wchoose :: (RandomGen g, Random a, Ord a, Fractional a) => [b] -> [a] -> g -> (b, g)
- wchoose_N :: (Fractional a, Ord a, RandomGen g, Random a) => [b] -> [a] -> g -> (b, g)
- nwchoose_N :: (Fractional a, Ord a, RandomGen g, Random a) => Int -> [b] -> [a] -> g -> ([b], g)
Documentation
rand :: (RandomGen g, Random n, Num n) => n -> g -> (n, g) Source
SimpleNumber.rand
is randomR
in (0,n).
r_iterate :: (t -> (a, t)) -> t -> [a] Source
State modifying variant of iterate
. Lifts random generator
functions to infinte lists.
let r = [3,1,7,0,12,1,6,4,12,11,7,4] in take 12 (r_iterate (rand 12) (mkStdGen 0)) == r
mk_kvariant :: r -> (t -> r -> r) -> (r -> r') -> Int -> (g -> (t, g)) -> g -> (r', g) Source
kvariant :: Int -> (g -> (a, g)) -> g -> ([a], g) Source
Construct variant of f generating k values. Note that the
result is the reverse of the initial sequence given by r_iterate
.
let r = [3,1,7,0,12,1,6,4,12,11,7,4] in fst (kvariant 12 (rand 12) (mkStdGen 0)) == reverse r
nrand :: (RandomGen g, Random n, Num n) => Int -> n -> g -> ([n], g) Source
Variant of rand
generating k values.
fst (nrand 10 (5::Int) (mkStdGen 246873)) == [0,5,4,0,4,5,3,2,3,1]
rand2 :: (RandomGen g, Random n, Num n) => n -> g -> (n, g) Source
SimpleNumber.rand2
is randomR
in (-n,n).
nrand2 :: (RandomGen g, Random a, Num a) => Int -> a -> g -> ([a], g) Source
Variant of rand2
generating k values.
nrrand :: (RandomGen g, Random a, Num a) => Int -> a -> a -> g -> ([a], g) Source
Variant of rrand
generating k values.
choose :: RandomGen g => [a] -> g -> (a, g) Source
SequenceableCollection.choose
selects an element at random.
exprand :: (Floating n, Random n, RandomGen g) => n -> n -> g -> (n, g) Source
SimpleNumber.exprand
generates exponentially distributed random
number in the given interval.
nexprand :: (Floating n, Random n, RandomGen g) => Int -> n -> n -> g -> ([n], g) Source
Variant of exprand
generating k values.
coin :: (RandomGen g, Random a, Ord a, Fractional a) => a -> g -> (Bool, g) Source
SimpleNumber.coin
is True
at given probability, which is in
range (0,1).
ncoin :: (RandomGen g, Random a, Ord a, Fractional a) => Int -> a -> g -> ([Bool], g) Source
Variant of coin
generating k values.
fst (ncoin 5 0.5 (mkStdGen 0)) == [True,True,False,True,False]
scramble :: RandomGen g => [t] -> g -> ([t], g) Source
List.scramble
shuffles the elements.
fst (scramble [1..5] (mkStdGen 0)) == [1,5,2,3,4]
wchoose :: (RandomGen g, Random a, Ord a, Fractional a) => [b] -> [a] -> g -> (b, g) Source
SequenceableCollection.wchoose
selects an element from a list
given a list of weights which sum to 1
.
kvariant 10 (wchoose "abcd" (C.normalizeSum [8,4,2,1])) (mkStdGen 0)
wchoose_N :: (Fractional a, Ord a, RandomGen g, Random a) => [b] -> [a] -> g -> (b, g) Source
Variant that applies normalizeSum
to weights.
let r = "dcbbacaadd" in r == fst (kvariant 10 (wchoose_N "abcd" [8,4,2,1]) (mkStdGen 0))
nwchoose_N :: (Fractional a, Ord a, RandomGen g, Random a) => Int -> [b] -> [a] -> g -> ([b], g) Source