【发布时间】:2021-02-18 14:11:15
【问题描述】:
我希望能够根据每个项目的某个预定义概率百分比返回(在我们的例子中,例如显示)枚举中的一个项目。此枚举的代码说明如下:
package me.lucas.test;
public enum Item {
ITEM_1("Item 1", 30),
ITEM_2("Item 2", 30),
ITEM_3("Item 3", 10),
ITEM_4("Item 4", 65);
private final String name;
private final int percentage;
Item(String name, int percentage) {
this.name = name;
this.percentage = percentage;
}
public String getName() {
return name;
}
public int getPercentage() {
return percentage;
}
}
此外,这些项目将存储在列表中。
package me.lucas.test;
import java.util.ArrayList;
import java.util.List;
public class Program {
private final List<Item> items = new ArrayList<>();
/**
* Displays an item among those in the list, according to their percentage chance of appearing.
* @param items The items
*/
public void displayItem(List<Item> items) {
Item item;
item = ?
System.out.println("Selected item : " + item.getName() + " with percentage : " + item.getPercentage());
}
}
也就是说,如本例所示,两个项目出现的机会百分比相同。
我还查看了以下主题 (Java Random Percentage Chance),但就我而言,百分比不是直接在表达式中而是在枚举中预定义的。
因此,我将感谢您的帮助。提前感谢您抽出宝贵时间帮助我。
【问题讨论】:
-
在运行这个例子时,你想显示或不显示一些东西,基于机会,相同的机会,对于列表中的所有项目,执行?是这样吗?
-
请注意,您的总百分比大于 1(即 135%)
-
这不是家庭作业写作服务。 135% 就像 100% 一样容易计算出来。
-
@lucasparmentier388:好吧,如果你有 2 件物品的几率为 100%,会发生什么?会选择哪一个?那你的预期结果是什么?这就是为什么我要指出非 100% 的总数
-
如果概率总和小于 100%,则一定意味着有时什么都没有返回。同样,如果概率之和大于 100%,则一定意味着有时会返回多个值。简而言之,除非概率总和正好是 100%,否则返回值必须是 list 值。 --- 或者,您可以将值重新分类为 weight,而不是 percentage,在这种情况下,它们不必添加任何特定的值,它们都必须大于零。
标签: java random percentage enumeration