给定一个java.util.Collection
,创建一个无尽的java.util.Iterator
的最简单方法是什么,它返回这些元素,以便它们根据给定分布(org.apache.commons.math.distribution
)?
最佳答案
List<Object> l = new ArrayList<Object>(coll);
Iterator<Object> i = new Iterator<Object>() {
public boolean hasNext() { return true; }
public Object next() {
return coll.get(distribution.nextInt(0, l.size());
}
}
你的问题是如何转换apache库中的Distribution
类来实现nextInt
方法。我不得不说,对我来说,如何从 Distribution
界面实际执行此操作还远非显而易见。
我能想到的一种(有点垃圾)方法是使用实际分布定义的概率生成一个EmpiricalDistribution
(在random
包中)数据集,然后使用经验分布作为分布
(上图)
关于java - 创建具有给定分布的无限迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1300062/