我有一个项目清单.这些项目中的每一项都有自己的概率.
任何人都可以提出一种基于其概率选择项目的算法吗?
我想从一个集合中选择一个随机项目,但是选择任何项目的机会应该与相关的权重成比例
示例输入:
item weight
---- ------
sword of misery 10
shield of happy 5
potion of dying 6
triple-edged sword 1
Run Code Online (Sandbox Code Playgroud)
所以,如果我有4个可能的项目,那么获得任何一个没有权重的项目的机会将是1/4.
在这种情况下,用户获得痛苦之剑的可能性应该是三角剑的10倍.
如何在Java中进行加权随机选择?
我想快速删除最后一个对象ArrayList.
我知道remove(Object O)接受O(n)一个ArrayList,但我想知道是否有可能在恒定时间内这样做,因为我只想删除最后一个对象?
在Java中,给定n个项目,每个项目都有权重w,如何从集合中选择一个等于w的随机项目?
假设每个权重是从0.0到1.0的双精度,并且集合中的权重总和为1. Item.getWeight()返回Item的权重.
问题描述: 我希望能够使用从另一个类传入的函数的ArrayList(其中函数已在其他类中定义).如果在一个类中定义了可能具有不同输入和返回类型的函数列表,我希望能够将其中一些的ArrayList(可能有重复项)作为参数传递给其他类的构造函数或方法,使用它们执行操作.
代码说明:
下面的代码是一个非常简化的示例,从设计的角度来看并不是很有意义.问题的焦点是该方法getResult()中SomeClass,一般如何,一旦你有他们使用功能的ArrayList.
尝试解决问题: getResult()方法实现是使用函数列表的许多尝试之一的示例.再次,请不要介意代码的设计.它就是这样做的,试图让问题的例子尽可能短.
简单的测试类
package com.Testing;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.function.Function;
public class Tester {
public static void main(String[] args)
{
// Some functions
Function<Integer, Integer> increment = (Integer input) -> {
return input + 1;
};
Function<Integer, Integer> decrement = (Integer input) -> {
return input - 1;
};
Function<Double, Double> timesPi = (Double input) -> {
return input * 3.14;
};
// list of Functions
List<Function> availableMathOperations = …Run Code Online (Sandbox Code Playgroud)