所以我有一个700x700的屏幕,我想创建一个物体(一个小行星)从屏幕左侧移动到右侧。一旦它离开屏幕,我希望它随机产生Y ana做同样的事情。 到目前为止,我创建的对象以随机Y生成并向右移动,但是,在0:100像素和600:700像素之间,我有对象,我不希望我的对象产生并穿过这些对象。我希望随机Y介于101和599之间。
if (centerX > width + 200) {
isTravelling = false;
centerX = -200;
centerY = (int)(Math.random());
}
答案 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
}