事情是这样的。最近我一直在做一个类似人工智能的项目。我想做的是,我会得到一个0到300之间的随机数,我必须根据这个数字做一个随机的事情。
现在我可以用
switch(/*number b/w 0-300*/){
case 0:
case 1:
so on to 300我尝试过IF
但我认为一定有更好的方法来做这件事,因为要做很多这样的案子需要花费很长的时间。
编辑:我想提一下,所有这些情况都是无效的,所以我不知道如何用列表来实现它们。我在java 7,不能改为java 8,所以界面很难管理。
发布于 2016-10-19 01:15:58
列出要从中选择的东西。
List<Choice> choices = new List<Choice>();
choices.add(something);
choices.add(somethingElse);
...
Choice random = choices.get(new Random().nextInt(choices.size()));发布于 2016-10-19 01:14:29
您可以为所有“随机事物”定义一个接口:
interface AIAction {
public void execute();
}然后在数组中收集所有这些操作的实现。我选择使用lambda实现每个AIAction,但这最终取决于您:
static AIAction[] actions = new AIAction[] {
() -> {System.out.println("a");},
() -> {System.out.println("b");},
() -> {System.out.println("c");}
};在此之后,您可以执行这样的随机操作:
Random rand = new Random();
int index = rand.nextInt(actions.length);
actions[index].execute();https://stackoverflow.com/questions/40120366
复制相似问题