【发布时间】:2013-09-11 13:44:31
【问题描述】:
在 Scala 中从集合中获取随机元素的有效方法是什么?有一个相关的question here,但就像其中一位 cmets 指出的那样,“[那个] 问题没有指定任何效率需求”。
【问题讨论】:
-
如果
size方法有效,您应该使用apple(randomIndexLessThanSize)。一般来说,没有这样的方法:例如,您无法从无限集合中获得公平的随机元素。
在 Scala 中从集合中获取随机元素的有效方法是什么?有一个相关的question here,但就像其中一位 cmets 指出的那样,“[那个] 问题没有指定任何效率需求”。
【问题讨论】:
size 方法有效,您应该使用apple(randomIndexLessThanSize)。一般来说,没有这样的方法:例如,您无法从无限集合中获得公平的随机元素。
使用具有恒定时间 size() 和 get() 方法的集合。
【讨论】:
不能在恒定时间内访问任意集合。因此,您需要一些具有所需属性的特殊集合。例如 - Vector 或 Array。其他人见Performance Characteristics of collections。
【讨论】:
如果您需要所有集合元素的随机顺序,那么Random.shuffle 就是您所需要的。 (最好把原来的集合转成数组,避免前后转换。)
【讨论】:
util.Random.shuffle(List.range(1,100)) take 3
【讨论】: