【发布时间】:2015-08-06 22:53:45
【问题描述】:
我正在尝试实现一个像骰子一样的代理:
defmodule Dice do
@on_load :seed_generator
def start_link(opts \\ []) do
Agent.start_link(fn -> [] end, name: __MODULE__)
end
def roll(n, val) do
Agent.cast(__MODULE__, fn(_) ->
Stream.repeatedly(fn -> :random.uniform(val) end)
|> Enum.take(n)
end)
end
def seed_generator do
:random.seed(:erlang.now)
:ok
end
end
但是,每次我重新启动 iex 时,生成的数字都是一样的。
我究竟做错了什么 ?种子是否因为 :random.uniform 调用在代理内部而不起作用?或者与Stream 相关的东西。
【问题讨论】: