如何将math.random转换为for循环

时间:2016-05-04 23:13:35

标签: java for-loop random

以简短的形式,我创建了一个math.random,它将选择一个随机数,然后另一个变量将使用该数字。在使用随机数之后,math.random将选择另一个数字,这将永远持续下去。我认为使用带有math.random的for循环使它看起来像这样:

for (int i = 0; i <100; i++) {
    int mRandom = (int) (Math.random() * 21 + 15);
}

然后我使用数字来改变我创建的精灵的速度和角度(整个代码用于创建精灵,所以我不会对正在使用的精灵有问题)

   for (int i = mIDontKnowTimer; i == mRandom; i++) {

这里我有一个我已经创建的计时器,当该计时器等于mrandom生成的数字时,速度和角度会发生变化

        int pSpeed = (int) (Math.random() * 3 + 3);
        int pAngle = (int) (Math.random() * 359);

        mXSpeed = pSpeed * Math.cos(pAngle);
        mYSpeed = pSpeed * Math.sin(pAngle);
    }

我很困惑如何使mRandom成为一个循环,因为它说第一行有一个非法的类型开始,并且它无法找到&#34; i&#34;在代码中

3 个答案:

答案 0 :(得分:0)

我首先将Math.Random放入一个函数中并在我的主循环中调用它。

public static int randomNumberGenerator(int min, int max){
        Random rand = new Random();
        return rand.nextInt(max - min) +min;

    }

现在在for/while循环中调用它。

答案 1 :(得分:0)

正如所写,您的mRandom仅在第一个for循环的范围内有效,并且对您的第二个for循环完全不可用。 (我说“写为”,因为我怀疑你的代码实际上看起来不像这样 - 它将无法编译。)

你的第二个循环对我来说并不是特别清楚,但看起来你正试图改变精灵的方向和速度mRandom次? (编辑:评论确认这一点。)

您可以使用嵌套的for循环来完成此任务:

int mRandom;
int pSpeed, pAngle;

for (int i = 0; i <100; i++) { //100 times in a row,
    mRandom = (int) (Math.random() * 21 + 15); //generate a random number

    for (int j = 0; j < mRandom; j++) { //count up to that random number
        //and repeatedly adjust your sprite's properties
        pSpeed = (int) (Math.random() * 3 + 3);
        pAngle = (int) (Math.random() * 359);

        mXSpeed = pSpeed * Math.cos(pAngle);
        mYSpeed = pSpeed * Math.sin(pAngle);
    }
}

值得注意的是,除非你在那里的某个地方重新绘制精灵,否则额外的速度和角度变化将毫无意义 - 你要多次更新这些属性但只重绘一次,所以只有最近的更改会坚持下去

答案 2 :(得分:0)

我认为您正在尝试这样做

for (int i = 0; i <100; i++) {
    int mRandom = (int) (Math.random() * 21 + 15);

    for (int i = mIDontKnowTimer; i == mRandom; i++) {
        ....
    }
}

您看到的问题是您尝试在其范围之外访问mRandom变量。