A random number generator