読者です 読者をやめる 読者になる 読者になる

Elixir で乱数を生成する

Elixir

erlang の rand モジュールか random モジュールを使う。random モジュールは昔からあるもので、rand モジュールは v18 で追加された。rand が使えない場合のみ random を使う。

rand モジュール

:rand.uniform  #=> 0.0 以上 1.0 以下の float
:rand.uniform(100) #=> 1 以上 100 以下の integer

seed は自動的に設定される。
注意すべきは uniform に整数 N を渡したとき、1 以上 N 以下の整数が返ってくること。他の言語では 0 以上 N-1 以下が返ってくることが多い。

Erlang -- rand

random モジュール

:random.seed(:erlang.now)
:random.uniform  #=> 0.0 以上 1.0 以下の float
:random.uniform(100) #=> 1 以上 100 以下の integer

rand モジュールと違い :random.seed を明示的に呼ばないと、定数が設定され毎回同じ順番で乱数が生成される。

Erlang -- random