更好的方法让java做随机的东西?

时间:2016-10-19 00:54:23

标签: java if-statement random switch-statement

这是事情。最近我一直在研究一个类似AI的项目。我想要做的是,我会得到一个0-300之间的随机数,我必须根据这个数字做一个随机的事情。

现在我可以使用

switch(/*number b/w 0-300*/){
case 0:
case 1:
so on to 300

我已经尝试了IF-Else案例,显然他们在转换案件时效率更低。

但我认为必须有一个更好的方法来做到这一点,因为在很多情况下,这样做会花费很长时间。

编辑:我想提一下所有这些案例都是VOID所以我不知道如何使用列表来实现它们。而我在java 7不能改为java 8所以界面有点难以管理

2 个答案:

答案 0 :(得分:0)

您可以为所有"随机事物":

定义一个界面
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();

答案 1 :(得分:0)

列出要从中选择的内容

List<Choice> choices = new List<Choice>();
choices.add(something);
choices.add(somethingElse);
...
Choice random = choices.get(new Random().nextInt(choices.size()));