Random Numbers
From Erlang Community
[edit] Problem
You want a random number from a given range. For example, you wish to randomly select one element from an array, simulate rolling a die in a game of chance, or generate a random password.
[edit] Solution
Use random:uniform/0 and random:uniform/1 ; the first returns a random float uniformly distributed between [0.0,1.1], and the second returns a random integer uniformly distributed between [0,N].
1> random:uniform(). 0.159112 2> random:uniform(150). 67 |
To select random integers from [N,M], can use N+random:uniform(M-N).
A common example is generating a random password:
generate_password(N) ->
lists:map(fun (_) -> random:uniform(90)+$\s+1 end, lists:seq(1,N)).
3> generate_password(8).
"l?8j#$&&"
4> generate_password(8).
"V |
The Erlang random number generator is attributed to B.A. Wichmann and I.D.Hill, in 'An efficient and portable pseudo-random number generator', Journal of Applied Statistics. AS183. 1982. Also Byte March 1987.
It can support bigint values, so no special recipe is required for extremely large random numbers.

Digg It
Del.icio.us
Reddit
Facebook
Stumble Upon
Technorati
Click here to order from amazon.com