+{- |The "System.Random" library provides one instance of 'RandomGen', the
+abstract data type 'StdGen'.
+
+The result of repeatedly using next 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 'split', all we require is that 'split' deliver
+generators that are (a) not identical and (b) independently robust in the sense
+just given.
+
+The 'show'\/'Read' instances of 'StdGen' provide a primitive way to save the
+state of a random number generator. It is required that @read (show g) == g@.
+
+In addition, 'read' may be used to map an arbitrary string (not necessarily one
+produced by 'show') onto a value of type 'StdGen'. In general, the 'read'
+instance of 'StdGen' has the following properties:
+
+* It guarantees to succeed on any string.
+
+*It guarantees to consume only a finite portion of the string.
+
+* Different argument strings are likely to result in different results.
+
+The function 'mkStdGen' provides an alternative way of producing an initial
+generator, by mapping an 'Int' into a generator. Again, distinct arguments
+should be likely to produce distinct generators.
+
+Programmers may, of course, supply their own instances of 'RandomGen'.
+
+-}