úÎEÖCÆ     portablestablelibraries@haskell.org3With a source of random number supply in hand, the  class allows the ;programmer to extract random values of a variety of types. Minimal complete definition:  and . Takes a range (lo,hi) and a random number generator  gA, and returns a random value uniformly distributed in the closed  interval [lo,hi]3, together with a new generator. It is unspecified  what happens if lo>hi/. For continuous types there is no requirement  that the values lo and hi% are ever produced, but they may be, 3 depending on the implementation and the interval.  The same as 4, but using a default range determined by the type: ! For bounded types (instances of  , such as ), ) the range is normally the whole type. F For fractional types, the range is normally the semi-closed interval  [0,1).  For *, the range is (arbitrarily) the range of . Plural variant of  , producing an infinite list of 5 random values instead of returning a new generator. Plural variant of  , producing an infinite list of 5 random values instead of returning a new generator.  A variant of . that uses the global random number generator  (see System.Random#globalrng).  A variant of . that uses the global random number generator  (see System.Random#globalrng). The  instance of  has a   of at least 30 bits. The result of repeatedly using  % should be at least as statistically robust as the (Minimal Standard Random Number Generator described by [System.Random#Park, System.Random#Carta]. -Until more is known about implementations of  , all we require is that  3 deliver generators that are (a) not identical and 2(b) independently robust in the sense just given. The  and  instances of % provide a primitive way to save the $state of a random number generator. It is required that  ( g) == g.  In addition, = may be used to map an arbitrary string (not necessarily one  produced by ) onto a value of type . In general, the   instance of  has the following properties: * It guarantees to succeed on any string. @ It guarantees to consume only a finite portion of the string. G Different argument strings are likely to result in different results.  The class . provides a common interface to random number  generators. Minimal complete definition:   and  . The   operation returns an  that is uniformly distributed  in the range returned by   (including both end points),  and a new generator. The  ; operation allows one to obtain two distinct random number K generators. This is very useful in functional programs (for example, when F passing a random number generator down to recursive calls), but very F little work has been done on statistically robust implementations of    ([System.Random#Burton, System.Random#Hellekalek] $ are the only examples we know of). The  2 operation yields the range of values returned by  the generator. It is required that:  If (a,b) =   g, then a < b.   " always returns a pair of defined s. "The second condition ensures that   cannot examine its H argument, and hence the value it returns can be determined only by the  instance of 1. That in turn allows an implementation to make  a single call to   to establish a generator's range, without 6 being concerned that the generator returned by (say)   might have . a different range to the generator passed to  . /The default definition spans the full range of .   The function  5 provides an alternative way of producing an initial generator, by mapping an - into a generator. Again, distinct arguments 1should be likely to produce distinct generators.  !"#$%& )Sets the global random number generator. )Gets the global random number generator. 'Applies  ) to the current global random generator, < updates it with one of the results, and returns the other. BUses the supplied function to get a value from the current global Jrandom generator, and updates the global generator with the new generator 'returned by the function. For example, rollDice gets a random integer between 1 and 6:  rollDice :: IO Int * rollDice = getStdRandom (randomR (1,6))      (      !"#!$ %&'()*+,-./012random-1.0.0.3 System.RandomRandomrandomRrandomrandomRsrandoms randomRIOrandomIOStdGen RandomGennextsplitgenRangemkStdGen setStdGen getStdGen newStdGen getStdRandombaseGHC.EnumBoundedghc-prim GHC.TypesChar integer-gmpGHC.Integer.TypeIntegerIntGHC.ShowShowGHC.ReadRead Text.ReadreadshowreadsgetTime stdFromString mkStdGen32 createStdGenmkStdRNGrandomIvalIntegerrandomIvalDouble int32CountiLogBasestdRangestdNextstdSplit theStdGen