我有min和max nextInt的错误

时间:2017-08-21 23:24:36

标签: java

我想让矢量x的速度随机,最小-5和最大5.我每次运行游戏都会崩溃。 随机的问题,因为当我设置velX = 2或3它完美的工作,请帮助我。 (抱歉我的英文,我希望你理解我)

velX = random.nextInt(5 - -5) + -5;

1 个答案:

答案 0 :(得分:0)

你可能想要这个:

velX = random.nextInt(10) - 5;

(生成一个随机int btw 010,然后减去5,给你一个范围btw -5(包括)和5(独家)如果您希望5也包含在内,请将nextInt()参数更改为11

OTOH你可能不应该使用真正的随机数,而是使用钟形曲线(中间的值比异常值更常出现)。实现这一目标的一种简单方法是使List具有所有值(一次用于异常值,更常用于中间值)并在其中随机选取。您可能想要使用这些值来查看哪种方法最适合您。

// do this only once, during initialization
List<Integer> values = new ArrayList<>();
values.add(-5);
values.addAll(Collections.nCopies(2, -4));
values.addAll(Collections.nCopies(3, -3));
values.addAll(Collections.nCopies(5, -2));
values.addAll(Collections.nCopies(8, -1));
values.addAll(Collections.nCopies(12, 0));
values.addAll(Collections.nCopies(8, 1));
values.addAll(Collections.nCopies(5, 2));
values.addAll(Collections.nCopies(3, 3));
values.addAll(Collections.nCopies(2, 4));
values.add(5);

// do this every time
velX = values.get(random.nextInt(values.size()));