Enum.random
You're seeing just the function
random
, go back to Enum module for more information.
Specs
Returns a random element of an enumerable
.
Raises Enum.EmptyError
if enumerable
is empty.
This function uses Erlang's :rand
module to calculate
the random value. Check its documentation for setting a
different random algorithm or a different seed.
The implementation is based on the
reservoir sampling
algorithm.
It assumes that the sample being returned can fit into memory;
the input enumerable
doesn't have to, as it is traversed just once.
If a range is passed into the function, this function will pick a random value between the range limits, without traversing the whole range (thus executing in constant time and constant memory).
Examples
The examples below use the :exsss
pseudorandom algorithm since it's
the default from Erlang/OTP 22:
# Although not necessary, let's seed the random algorithm
iex> :rand.seed(:exsss, {100, 101, 102})
iex> Enum.random([1, 2, 3])
2
iex> Enum.random([1, 2, 3])
1
iex> Enum.random(1..1_000)
309