从列表中获取随机元素

希哈里亚尔

我基本上是在寻找与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(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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章