generate non-uniform random numbers