怎么办我随机数字几秒钟?

时间:2012-10-22 09:46:53

标签: java random numbers

在java中,人们可以输入随机数:

import java.util.Random;

我正在开发一款游戏,它对我游戏中的随机数发生器至关重要。但它为我快速改变数字,我真的很喜欢它改为新的随机数字。我怎么做?我试图在谷歌搜索但没有给我任何东西。

5 个答案:

答案 0 :(得分:2)

我想也许你误解了它是如何运作的。例如,当您拨打random.nextInt(10);时,它会在每次呼叫时返回不同的号码。它不是“总是在变化”,它会生成一系列数字,并且您可以控制它何时执行此操作。在你提出要求之前,它不会产生新的数字。

如果要在调用nextInt()等之间保存变量,可以将其分配给变量。

答案 1 :(得分:1)

谷歌什么都没给你?我非常怀疑。

public class Game {
    private Random random = new Random(System.currentTimeMillis());

    // Generate all the random numbers you need.
}

如果您按计划需要,请使用Timer仅在闹钟响起时拨打下一个号码。

答案 2 :(得分:1)

您可以使用TimerTimerTask定期生成随机数,如下所示:

public class MyRandomNumberGenerator extends TimerTask{
int ramdomNumber =0;
Random r = new Random();
@Override
    public void run() {
        // TODO Auto-generated method stub
        randomNumber = r.nextInt(10);
        //Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive) here it is 10,

    }
public int getRandomNumber(){
    return randomNumber;
} 

}

现在在你要使用随机数的主类中

使用此代码

MyRandomNumberGenerator rng = new MyRandomNUmberGenerator();
Timer t = new Timer();
t.schedule(rng,System.getCurrentTimeMillis,10000);
int r = rng.getRandomNumber();

此处System.getCurrentTimeMillis表示从现在起启动计时器,10000表示每10000毫秒创建一个新的随机数并存储在实例变量中,然后您可以访问该随机数使用getRandomNumber类的MyRandomNumberGenerator方法编号。

答案 3 :(得分:0)

您在Random对象上调用的方法每次调用时都会返回一个新的随机数。如果那不是您想要的,那么编写自己的类,其中包含Random的实例,并检查上次您何时调用它来获取新的随机数。如果是新的时间,请返回一个新的。像这样:

class TimedRandom {
    private final Random random = new Random();

    private int lastNumber;
    private long lastRefreshTime;

    public int getNumber() {
        long now = System.currentTimeMillis();

        // If it's more than 2 seconds ago, generate a new random number
        if (now - lastRefreshTime > 2000L) {
            lastNumber = random.nextInt();
        }

        lastRefreshTime = now;
        return lastNumber;
    }
}

答案 4 :(得分:0)

public static void main(String[] args) throws Exception {
    Random random = new Random(System.currentTimeMillis());
    for (int i = 0; i < 10; i++) {
        int number = random.nextInt(10);
        System.out.println("number: " + number);
        // sleep 1s every generation
        TimeUnit.SECONDS.sleep(1);
    }
}