我基本上是在寻找与Ruby相当的Elixir Array#sample
。可以让我做到的事情:
list = [1,2,3,4,5,6,7]
sample(list)
#=> 4
sample(list, 3)
#=> [6, 2, 5]
我在Elixir列表文档中也没有找到任何内容。
何塞Valim在说他的回答,在Elixir 1.1
和上面,你现在可以使用这些方法来获取从列表中随机元素(S):
Enum.random/1
-获取单个随机元素Enum.take_random/2
-获取多个随机元素例:
Enum.random(list) #=> 4
Enum.take_random(list, 3) #=> [3, 9, 1]
Enum.take_random(list, 1) #=> [7]
请记住先打电话:random.seed(:erlang.now)
!
我仍然找不到实现此目的的“正确”和“神奇”方法,但这是我能想到的最好的方法:
为了获得一个随机元素:
list |> Enum.shuffle |> hd
#=> 4
注意:如果的list
值为空,则会产生异常
为了获得多个随机元素:
list |> Enum.shuffle |> Enum.take(3)
#=> [7, 1, 5]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句