úÎG«DV     portablestablelibraries@haskell.org Trustworthy3With 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. The   operation returns an  that is uniformly distributed  in the range returned by   (including both end points),  and a new generator. 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  ; 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 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)) 8  !"#$%&'()*+,-./0123456789:;<=>?@    /  !"#$%&'()*+,-./0123456789:;<=>?@A      !"#!$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLrandom-1.0.1.1 System.RandomRandomrandomRrandomrandomRsrandoms randomRIOrandomIOStdGen RandomGennextgenRangesplitmkStdGen setStdGen getStdGen newStdGen getStdRandombaseGHC.EnumBoundedghc-prim GHC.TypesChar integer-gmpGHC.Integer.TypeIntegerIntGHC.ShowShowGHC.ReadRead Text.Readreadshowreads$fRandomCDouble$fRandomCFloat $fRandomFloat$fRandomDouble $fRandomBool $fRandomChar$fRandomCUIntMax$fRandomCIntMax$fRandomCUIntPtr$fRandomCIntPtr$fRandomCULLong$fRandomCLLong$fRandomCSigAtomic$fRandomCWchar $fRandomCSize$fRandomCPtrdiff$fRandomCULong $fRandomCLong $fRandomCUInt $fRandomCInt$fRandomCUShort$fRandomCShort$fRandomCUChar$fRandomCSChar $fRandomCChar$fRandomWord64$fRandomWord32$fRandomWord16 $fRandomWord8 $fRandomWord $fRandomInt64 $fRandomInt32 $fRandomInt16 $fRandomInt8 $fRandomInt$fRandomInteger $fReadStdGen $fShowStdGen$fRandomGenStdGen