Just a quick note for something I was just reminded of the hard way:
Always seed your random values.
If you’re using the Enum::Shuffle/1
function, for example, pay attention to the part of the documentation that says:
Notice that you need to explicitly call
:random.seed/1
and set a seed value for the random algorithm. Otherwise, the default seed will be set which will always return the same result.
Do as the documentation suggestions and use this:
:random.seed(:os.timestamp)
Otherwise, you will get the same results returned to you a thousand times.
Trust me. I know. I’ve lived it. Save yourself.
(Special thanks to @sfalcon for reminding me…)
Update August 11, 2015: Erlang.now
is deprecated in Erlang as of v18.0. The text of this post has been updated to change to the :os.timestamp
command to set the random seed.