Safe Haskell | None |
---|---|
Language | Haskell2010 |
Game.LambdaHack.Core.Random
Description
Representation of probabilities and random computations.
Synopsis
- type Rnd a = State SMGen a
- randomR :: Integral a => (a, a) -> Rnd a
- randomR0 :: Integral a => a -> Rnd a
- nextRandom :: forall a. Integral a => a -> SMGen -> (a, SMGen)
- randomWord32 :: Rnd Word32
- oneOf :: [a] -> Rnd a
- shuffle :: Eq a => [a] -> Rnd [a]
- invalidInformationCode :: Word16
- shuffleExcept :: Vector Word16 -> Int -> [Word16] -> Rnd [Word16]
- frequency :: Show a => Frequency a -> Rnd a
- type Chance = Rational
- chance :: Chance -> Rnd Bool
- castDice :: AbsDepth -> AbsDepth -> Dice -> Rnd Int
- oddsDice :: AbsDepth -> AbsDepth -> Dice -> Rnd Bool
- castDiceXY :: AbsDepth -> AbsDepth -> DiceXY -> Rnd (Int, Int)
- foldrM :: Foldable t => (a -> b -> Rnd b) -> b -> t a -> Rnd b
- foldlM' :: Foldable t => (b -> a -> Rnd b) -> b -> t a -> Rnd b
- rollFreq :: Show a => Frequency a -> SMGen -> (a, SMGen)
The Rng
monad
Random operations
randomR :: Integral a => (a, a) -> Rnd a Source #
Get a random object within a (inclusive) range with a uniform distribution.
nextRandom :: forall a. Integral a => a -> SMGen -> (a, SMGen) Source #
Generate a random integral value in [0, x]
range, where x
is within
Int32
.
The limitation to Int32
values is needed to keep it working on signed
types. In package random
, a much more complex scheme is used
to keep it working for arbitrary fixed number of bits.
shuffle :: Eq a => [a] -> Rnd [a] Source #
Generates a random permutation. Naive, but good enough for small inputs.
invalidInformationCode :: Word16 Source #
Code that means the information (e.g., flavour or hidden kind index) should be regenerated, because it could not be transferred from previous playthrough (it's random in each playthrough or there was no previous playthrough).
shuffleExcept :: Vector Word16 -> Int -> [Word16] -> Rnd [Word16] Source #
Generates a random permutation, except for the existing mapping.
frequency :: Show a => Frequency a -> Rnd a Source #
Gen an element according to a frequency distribution.
Fractional chance
Casting dice scaled with level
castDice :: AbsDepth -> AbsDepth -> Dice -> Rnd Int Source #
Cast dice scaled with current level depth.
oddsDice :: AbsDepth -> AbsDepth -> Dice -> Rnd Bool Source #
Cast dice scaled with current level depth and return True
if the results is greater than 50.
castDiceXY :: AbsDepth -> AbsDepth -> DiceXY -> Rnd (Int, Int) Source #
Cast dice, scaled with current level depth, for coordinates.