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中文网其他相关文章!