首页  >  文章  >  Java  >  如何在 Java 中实现加权随机选择?

如何在 Java 中实现加权随机选择?

Susan Sarandon
Susan Sarandon原创
2024-11-06 19:58:03704浏览

How can I implement Weighted Random Selection in Java?

Java 中的加权随机选择

从集合中选择随机项目时,通常希望将选择偏向于具有更高相关性的项目重量。在 Java 中,这可以使用 NavigableMap 来实现,这是一种专门为此目的而定制的专用数据结构。

使用 NavigableMap 实现的 RandomCollection 类允许添加加权项并根据其各自的值检索随机项重量。要创建 RandomCollection,只需指定一个随机生成器(可选,或使用默认的 Random)。

向 RandomCollection 添加项目非常简单。每个项目都与一个权重相关联,权重代表其被选择的概率。添加新物品时,总重量会保持不变。

要选择随机物品,会生成 0 到总重量之间的随机数。然后使用 NavigableMap 的 upperEntry() 方法检索权重大于随机数的第一个条目。与此条目关联的值是随机选择的项目。

示例:

RandomCollection<String> rc = new RandomCollection<>();
rc.add(40, "dog").add(35, "cat").add(25, "horse");

for (int i = 0; i < 10; i++) {
    System.out.println(rc.next());
}

此代码将生成随机的动物序列(“狗”、“猫”、“马”) ) 根据概率进行加权。

以上是如何在 Java 中实现加权随机选择?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn