Here are some interesting ways to get pseudo random numbers. Using the reductions count does not generate a uniform distribution in the test, but perhaps in a busy system it (erlang:statistics(reductions)) could be uniform. The benchmark was ran (with R14B01, without HiPE) on an AMD Phenom 9950 Quad-Core (64 bit) running Linux 2.6.32-23-generic (Ubuntu).
erl -noshell -pz ebin -s run test -s init stop
N == 10000 (10 runs)
crypto:rand_uniform/ get: 58996.8 µs ( 26.1)
erlang:now/0 get: 10001.3 µs ( 4.4)
erlang:process_info( get: 2256.5 µs ( 1.0)
erlang:statistics(r) get: 2436.1 µs ( 1.1)
random:uniform/1 get: 6723.0 µs ( 3.0)