WeightedRandom.java
net.minecraft.util.random.WeightedRandom
信息
- 全限定名:net.minecraft.util.random.WeightedRandom
- 类型:public class
- 包:net.minecraft.util.random
- 源码路径:src/main/java/net/minecraft/util/random/WeightedRandom.java
- 起始行号:L9
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
- 无
构造器
private WeightedRandom() @ L10
- 构造器名:WeightedRandom
- 源码定位:L10
- 修饰符:private
参数:
- 无
说明:
TODO
方法
下面的方法块按源码顺序生成。
public static <T> int getTotalWeight(List<T> items, ToIntFunction<T> weightGetter) @ L13
- 方法名:getTotalWeight
- 源码定位:L13
- 返回类型:
int - 修饰符:public static
参数:
- items: List
- weightGetter: ToIntFunction
说明:
TODO
public static <T> Optional<T> getRandomItem(RandomSource random, List<T> items, int totalWeight, ToIntFunction<T> weightGetter) @ L27
- 方法名:getRandomItem
- 源码定位:L27
- 返回类型:
Optional - 修饰符:public static
参数:
- random: RandomSource
- items: List
- totalWeight: int
- weightGetter: ToIntFunction
说明:
TODO
public static <T> Optional<T> getWeightedItem(List<T> items, int index, ToIntFunction<T> weightGetter) @ L38
- 方法名:getWeightedItem
- 源码定位:L38
- 返回类型:
Optional - 修饰符:public static
参数:
- items: List
- index: int
- weightGetter: ToIntFunction
说明:
TODO
public static <T> Optional<T> getRandomItem(RandomSource random, List<T> items, ToIntFunction<T> weightGetter) @ L49
- 方法名:getRandomItem
- 源码定位:L49
- 返回类型:
Optional - 修饰符:public static
参数:
- random: RandomSource
- items: List
- weightGetter: ToIntFunction
说明:
TODO
代码
public class WeightedRandom {
private WeightedRandom() {
}
public static <T> int getTotalWeight(List<T> items, ToIntFunction<T> weightGetter) {
long totalWeight = 0L;
for (T item : items) {
totalWeight += weightGetter.applyAsInt(item);
}
if (totalWeight > 2147483647L) {
throw new IllegalArgumentException("Sum of weights must be <= 2147483647");
} else {
return (int)totalWeight;
}
}
public static <T> Optional<T> getRandomItem(RandomSource random, List<T> items, int totalWeight, ToIntFunction<T> weightGetter) {
if (totalWeight < 0) {
throw (IllegalArgumentException)Util.pauseInIde(new IllegalArgumentException("Negative total weight in getRandomItem"));
} else if (totalWeight == 0) {
return Optional.empty();
} else {
int selection = random.nextInt(totalWeight);
return getWeightedItem(items, selection, weightGetter);
}
}
public static <T> Optional<T> getWeightedItem(List<T> items, int index, ToIntFunction<T> weightGetter) {
for (T item : items) {
index -= weightGetter.applyAsInt(item);
if (index < 0) {
return Optional.of(item);
}
}
return Optional.empty();
}
public static <T> Optional<T> getRandomItem(RandomSource random, List<T> items, ToIntFunction<T> weightGetter) {
return getRandomItem(random, items, getTotalWeight(items, weightGetter), weightGetter);
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Util.pauseInIde()
- 引用位置: