scala - 在 Scala 中随机拆分数组

标签 scala random collect

我正在用 Scala 构建一个决策树系统,但我的数据中的一些条目具有相同的属性。 我通过实现“随机”节点类型来解决这个问题,允许查询随机选择要遍历的分支,但是在尝试随机拆分剩余示例时出现“MatchError”。 我当前的代码:

def splitRandom(examples: Array[String]): Array[String]={
        examples.collect {case x if(r.nextInt(100) < 50) => x}
}

“examples”是一个字符串数组,每个字符串都是一行,包含一个数据条目及其所有属性。

最佳答案

collect 不是随机行为的好选择,因为相同的条件可以计算两次(第一次在 isDefinedAt 上,然后第二次计算值);如果它第一次说真而第二次说假——在同一个输入上——匹配将会被打乱。使用 filter 代替:

examples.filter(_ => r.nextInt(100) < 50)

关于scala - 在 Scala 中随机拆分数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12094208/

相关文章:

list - 如何替换列表中的给定项目?

scala - PlayFramework FakeRequest 返回 400 错误

python - numpy - 返回索引如果值在 3d 数组之一

Play 2.2.x 中的安全性

scala - 参数扩展类

Java 好奇循环性能

c - 预测由 C (glibc) rand() 生成的下一个数字

python - 从数组中选择一个随机元素

java - collectingAndThen方法足够高效吗?

kotlin 中的 Java 8 stream.collect(Collectors.toMap()) 模拟