&Enum.random/1
Enum.random(0..n)
会随机生成0 to n
您也可以发送列表作为参数
也许这个其他答案暗示,你可以使用
Enum.random/1
,但你不实际上需要传递它“数字列表”(作为问题,如最初写的)假设。
Enum.random/1
的文档指出:
如果将范围传递给函数,则该函数将在范围限制之间选择一个随机值,而不遍历整个范围(从而在恒定时间和恒定内存中执行)。
因此这些应该(至少大致)等效:
:rand.uniform(n)
1..n |> Enum.random()
System.unique_integer/1
。以下“返回一个在当前运行时实例中唯一的整数”:
System.unique_integer()
一个唯一的正整数(可用于生成“随机名称”):
System.unique_integer([:positive])
唯一单调递增整数:
System.unique_integer([:monotonic])
我需要一个不带零的 6 位整数,所以我这样做了:
Enum.map(0..5, fn _ -> Enum.random(1..9) end) |> Integer.undigits
我不会将其用于任何大型用途,但我认为对于少数数字和不经常使用的情况来说这是可以接受的。