java - 创建具有给定分布的无限迭代器

标签 java collections random statistics iterator

给定一个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/

相关文章:

java - 尝试将邮件发送到电子邮件地址列表(其中的电子邮件 ID 无效)时出错

java - 两个不同 Java 版本的两种实现

java - Java 中通用列表的过滤和排序项目

arrays - 如何从具有ID的数组中创建模型的集合-Laravel

linq-to-sql - 解决 LinqToSQls "queries with local collections are not supported"异常

javascript - 如何生成5个不同的随机数?

java - 在 Java 中使用 CBC 模式下的 128 位 AES 加密和 PKCS #5 填充进行用户身份验证

java - 如何拦截进入 Java Swing JTextField 的键盘敲击?

algorithm - 将数字拆分为随机部分

javascript为变量分配错误的值