如何从 Scala 数组中选择随机元素?
例如,有一个 Scala 数组 val A = Array("please", "help", "me")
。如何从这个数组中选择一个随机元素?
For example, there is a Scala array val A = Array("please", "help", "me")
. How to choose a random element from this array?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
如果您想要更惯用的解决方案,请考虑使用 typeclass 模式(scala 中的隐式类)。
现在,如果隐式类在范围内,您可以:
如果您确定该选项包含某些值,则可以使用
get
方法。尽管如此,还是建议使用模式匹配或 getOrElse:
注意,
randomChoice
方法假定元素替换。If you want a more idiomatic solution, consider using the typeclass pattern (implicit classes in scala).
Now if the implicit class is in scope, you can:
If you are sure that the option contains some value, you can use the
get
method.Nonetheless, pattern matching or
getOrElse
are recommended:Note that the
randomChoice
method assumes substitution of elements.根本不涉及重新排列数组的更好答案是这样的:
这也通常有效
A better answer that does not involve reshuffling the array at all would be this:
This also works generically
我们还可以使用
Option
monad 添加一些安全性(使用lift
方法)。实际上,在任何集合上使用此方法时,
即使您的集合为空,或者您的随机索引超出范围,您的结果也将始终是一个选项。
安全驾驶<3
We can also add some safety with the
Option
monad (using thelift
method)Actually, when using this method on any collection,
even if your collection is empty, or your random index is out of boundaries, your result will always be an Option.
Drive safe <3