【问题标题】:Efficient way to get a random element in Scala?在Scala中获取随机元素的有效方法?
【发布时间】:2013-09-11 13:44:31
【问题描述】:

在 Scala 中从集合中获取随机元素的有效方法是什么?有一个相关的question here,但就像其中一位 cmets 指出的那样,“[那个] 问题没有指定任何效率需求”。

【问题讨论】:

  • 如果size 方法有效,您应该使用apple(randomIndexLessThanSize)。一般来说,没有这样的方法:例如,您无法从无限集合中获得公平的随机元素。

标签: scala random


【解决方案1】:

使用具有恒定时间 size() 和 get() 方法的集合。

【讨论】:

    【解决方案2】:

    不能在恒定时间内访问任意集合。因此,您需要一些具有所需属性的特殊集合。例如 - VectorArray。其他人见Performance Characteristics of collections

    【讨论】:

      【解决方案3】:

      如果您需要所有集合元素的随机顺序,那么Random.shuffle 就是您所需要的。 (最好把原来的集合转成数组,避免前后转换。)

      【讨论】:

        【解决方案4】:
        util.Random.shuffle(List.range(1,100)) take 3 
        

        【讨论】:

          猜你喜欢
          • 2014-09-23
          • 2018-02-12
          • 2012-01-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-20
          • 2018-01-26
          • 2022-01-09
          相关资源
          最近更新 更多