Java Math.random()关注

时间:2013-11-22 21:16:01

标签: java math coordinates

所以我有一个700x700的屏幕,我想创建一个物体(一个小行星)从屏幕左侧移动到右侧。一旦它离开屏幕,我希望它随机产生Y ana做同样的事情。 到目前为止,我创建的对象以随机Y生成并向右移动,但是,在0:100像素和600:700像素之间,我有对象,我不希望我的对象产生并穿过这些对象。我希望随机Y介于101和599之间。

if (centerX > width + 200) {
                isTravelling = false;
                centerX = -200;
                centerY = (int)(Math.random());
            }

4 个答案:

答案 0 :(得分:5)

import java.util.Random;

public class YourClass {
    Random rnd = new Random();
    // insert variable declarations here...

    public void yourMethod() {
        if (centerX > width + 200) {
            isTravelling = false;
            centerX = -200;
            centerY = rnd.nextInt(499) + 101;
        }
    }
}

答案 1 :(得分:1)

Math.floor(Math.random() * 499 + 101)正是您要找的

答案 2 :(得分:1)

您可以执行以下操作:

min + ((int) (Math.random() * (max - min + 1))

Math.random()在[0,1]范围内生成一个double值(即包括0且不包括1)。

答案 3 :(得分:1)

Math.random()返回[0-1]范围内的双精度,这不是你想要的。

您可以创建一个new Random()对象并调用其nextInt(max)方法,以获得介于0和最大值之间的均匀随机数(不包括最大值)。

private final int MAX = 600;
private final int MIN = 101;
private Random rnd = new Random();

public void doStuff() {
  // before
  if (centerX > width + 200) {
    isTravelling = false;
    centerX = -200;
    centerY = rnd.nextInt(MAX-MIN+1)+MIN;
  }
  // after
}