Ser*_*pia 56 random integer elixir
我需要生成一个随机数.我发现了这个Enum.random/1函数,但是它需要一个可列举的数字,例如列表或数字范围.
这是获得随机数的唯一方法吗?
Ser*_*pia 98
您可以rand无缝地从Elixir代码中调用Erlang的模块.
random_number = :rand.uniform(n)
Run Code Online (Sandbox Code Playgroud)
将给出1 <= x <= n的随机数
Mic*_*aev 30
&Enum.random/1
Enum.random(0..n)将0 to n随机生成
您也可以将列表作为参数发送
Ken*_*itt 10
正如另一个答案所暗示的那样,您可以使用Enum.random/1但实际上不需要传递它“数字列表”(正如问题,如最初编写的那样)假设的。
正如其他答案的评论者指出的那样,状态文档Enum.random/1:
如果将范围传递给函数,则该函数将在范围限制之间选择一个随机值,而不遍历整个范围(从而在恒定时间和恒定内存中执行)。
因此,这些应该(至少大致)等效:
:rand.uniform(n)
Run Code Online (Sandbox Code Playgroud)
1..n |> Enum.random()
Run Code Online (Sandbox Code Playgroud)
System.unique_integer/1根据您想要“随机”数字的确切原因,您也许也可以使用。以下“返回一个在当前运行时实例中唯一的整数”:
System.unique_integer()
Run Code Online (Sandbox Code Playgroud)
一个唯一的正整数(可用于生成“随机名称”):
System.unique_integer([:positive])
Run Code Online (Sandbox Code Playgroud)
唯一的单调递增整数:
System.unique_integer([:monotonic])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25943 次 |
| 最近记录: |