【eralng】random 伪随机

来源:互联网 发布:软件售后服务计划书 编辑:程序博客网 时间:2024/04/29 08:05

erlang 版本

  • 18.1.0

random seed

  • seed0 函数返回值是固定的,也就是说每次启动 erlang 系统最初的 seed_put 都是相同的值;
seed0() ->    {3172, 9814, 20125}.seed() ->    case seed_put(seed0()) of    undefined -> seed0();    {_,_,_} = Tuple -> Tuple    end.

现象

这会导致什么情况呢,请看:
这里写图片描述

测试结果

  • test1, test2, test3 三个节点分别调用了5次 random:uniform(). 得到的值都是相同的!,由此可推断继续调用该函数得到的结果仍然相同。

建议

可以使用 erlang:now(). 的值作为随机种子:

    random:seed( erlang:timestamp() ).
0 0