Random_Provider -- abstract source of random numbers
This provides the random number input to be used by the 'random' effect.
Implementation may be dumb sequences of pseudo-random numbers or high-qualiity
cryptographic random number generators
A Random_Provider contains an immutable state, repeated calls to 'get' result
in the same value. To produce a sequence of different random numbers, 'next'
must be used to create a new instance of 'Random_Provider' before 'get' can be
used to obtain the new random number.
Return the random number stored in this instance of Random_Provider, in the
NOTE: this feature is pure, i.e., repeated calls on the same target result
in equal results. Use 'next' to get different results.