Java Math.random在while循环中不是随机的

时间:2014-10-05 02:43:09

标签: java swing random while-loop

我正在运行以下代码来获取随机(x,y)坐标对。但是,我一遍又一遍地得到同一对。

int counter=0;
while(counter<20){
    x3=(int)Math.random()*831+50;
    y3=(int)Math.random()*381+50;
    canvas.setColor(Color.white);
    canvas.drawString("*", x3, y3);
    counter++;
    }

我是Java的新手,所以请告诉我一个简单的方法来解决这个问题。谢谢!

1 个答案:

答案 0 :(得分:3)

Math.random()返回介于0.0和1.0之间的值。 Java从左到右进行评估,导致(int)Math.random()首先将值截断为0,因此x3y3被评估为

x3 = 0 + 50;
y3 = 0 + 50;

在括号中围绕作业的第一个术语

int x3 = (int) (Math.random() * 831) + 50;
int y3 = (int) (Math.random() * 381) + 50;