我基本上是在寻找 Ruby 的 Elixir 等价物Array#sample http://ruby-doc.org/core-2.2.0/Array.html#sample-method。可以让我这样做的东西:
list = [1,2,3,4,5,6,7]
sample(list)
#=> 4
sample(list, 3)
#=> [6, 2, 5]
我没有在其中找到任何东西Elixir 列表文档 http://elixir-lang.org/docs/stable/elixir/List.html either.
更新答案
正如何塞·瓦利姆 (José Valim) 在他的回答 https://stackoverflow.com/questions/31220622/get-random-elements-from-a-list/31229846#31229846, in Elixir 1.1
如上所述,您现在可以使用这些方法从列表中获取随机元素:
-
Enum.random/1 https://hexdocs.pm/elixir/Enum.html#random/1- 用于获取单个随机元素
-
Enum.take_random/2 https://hexdocs.pm/elixir/Enum.html#take_random/2- 用于获取多个随机元素
Example:
Enum.random(list) #=> 4
Enum.take_random(list, 3) #=> [3, 9, 1]
Enum.take_random(list, 1) #=> [7]
记得打电话:random.seed(:erlang.now)
first!
原答案
我仍然无法找到“正确”和“神奇”的方法来做到这一点,但这是我能想到的最好的方法:
为了获取单个随机元素:
list |> Enum.shuffle |> hd
#=> 4
注意:如果list
是空的
为了获得多个随机元素:
list |> Enum.shuffle |> Enum.take(3)
#=> [7, 1, 5]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)