Hoogle Search
Within LTS Haskell 23.21 (ghc-9.8.4)
Note that Stackage only displays results for the latest LTS and Nightly snapshot. Learn more.
random :: (Random a, RandomGen g) => g -> (a, g)random System.Random The same as randomR, but using a default range determined by the type:
random :: (Random a, RandomGen g) => g -> (a, g)tf-random System.Random.TF.Instances No documentation available.
random :: MTRandom a => MTGen -> IO amersenne-random System.Random.Mersenne The same as randomR, but using a default range determined by the type:
-
This library deals with the common task of pseudo-random number generation.
-
random System.Random The class of types for which random values can be generated. Most instances of Random will produce values that are uniformly distributed on the full range, but for those types without a well-defined "full range" some sensible default subrange will be selected. Random exists primarily for backwards compatibility with version 1.1 of this library. In new code, use the better specified Uniform and UniformRange instead.
-
tf-random System.Random.TF.Instances No documentation available.
-
randomIO :: (Random a, MonadIO m) => m arandom System.Random A variant of randomM that uses the global pseudo-random number generator globalStdGen.
>>> import Data.Int >>> randomIO :: IO Int32 -1580093805
This function is equivalent to getStdRandom random and is included in this interface for historical reasons and backwards compatibility. It is recommended to use uniformM instead, possibly with the globalStdGen if relying on the global state is acceptable.>>> import System.Random.Stateful >>> uniformM globalStdGen :: IO Int32 -1649127057
randomR :: (Random a, RandomGen g) => (a, a) -> g -> (a, g)random System.Random Takes a range (lo,hi) and a pseudo-random number generator g, and returns a pseudo-random value uniformly distributed over the closed interval [lo,hi], together with a new generator. It is unspecified what happens if lo>hi, but usually the values will simply get swapped.
>>> let gen = mkStdGen 2021 >>> fst $ randomR ('a', 'z') gen 't' >>> fst $ randomR ('z', 'a') gen 't'
For continuous types there is no requirement that the values lo and hi are ever produced, but they may be, depending on the implementation and the interval. There is no requirement to follow the Ord instance and the concept of range can be defined on per type basis. For example product types will treat their values independently:>>> fst $ randomR (('a', 5.0), ('z', 10.0)) $ mkStdGen 2021 ('t',6.240232662366563)
In case when a lawful range is desired uniformR should be used instead.randomRIO :: (Random a, MonadIO m) => (a, a) -> m arandom System.Random A variant of randomRM that uses the global pseudo-random number generator globalStdGen
>>> randomRIO (2020, 2100) :: IO Int 2040
Similar to randomIO, this function is equivalent to getStdRandom randomR and is included in this interface for historical reasons and backwards compatibility. It is recommended to use uniformRM instead, possibly with the globalStdGen if relying on the global state is acceptable.>>> import System.Random.Stateful >>> uniformRM (2020, 2100) globalStdGen :: IO Int 2079
Page 1 of many | Next