/** * Creates an instance of {@link ObjectGenerator} which generates specified values distributed by their weights. * * @param pairs List of values with corresponding weights. * @param <T> Type instance of {@link ObjectGenerator} will generate. * @return An instance of {@link ObjectGenerator} which generates specified values distributed by their weights. */ public static <T> ObjectGenerator<T> weighted(List<WeightPair<T>> pairs) { return wrap(new WeightedValue<>(unwrapWeightPairs(pairs))); }
/** * Creates an instance of {@link ObjectGenerator} which generates specified values distributed by their weights. * * @param pairs List of values with corresponding weights. * @param <T> Type instance of {@link ObjectGenerator} will generate. * @return An instance of {@link ObjectGenerator} which generates specified values distributed by their weights. */ public static <T> ObjectGenerator<T> weighted(List<WeightPair<T>> pairs) { return wrap(new WeightedValue<>(unwrapWeightPairs(pairs))); }
/** * Weighted value definition. * * @return Weighted value definition rule. */ @SuppressWarnings({ "unchecked", "rawtypes" }) public Rule weightedValue() { return Sequence(function("weighted", bracketList(weightedValuePair())), push(new WeightedValue((List) pop()))); }
/** * Weighted value definition. * * @return Weighted value definition rule. */ @SuppressWarnings({ "unchecked", "rawtypes" }) public Rule weightedValue() { return Sequence(function("weighted", bracketList(weightedValuePair())), push(new WeightedValue((List) pop()))); }