-1

Javaでは、乱数を入れることができます:

import java.util.Random;

私はゲームを開発しており、ゲームのランダマイザーに不可欠です。しかし、それは私にとって数字を高速に変更し、新しいランダム化された数字に変更する時間が本当に好きでした. それ、どうやったら出来るの?私はグーグルで検索しようとしましたが、何もくれませんでした。

4

5 に答える 5

2

おそらくあなたはそれがどのように機能するかを誤解していると思います。たとえば、電話をかけると、電話random.nextInt(10);をかけるたびに異なる番号が返されます。それは「常に変化している」わけではなく、一連の数字を生成し、いつこれを行うかを制御できます。要求されるまで、新しい番号は生成されません。

nextInt()などの呼び出しの間に保存したい場合は、変数に割り当てることができます。

于 2012-10-22T09:53:40.130 に答える
1

とを使用Timerして、TimerTask次のように一定の間隔で乱数を生成できます。

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使用してその乱数にアクセスできることを意味します。getRandomNumberMyRandomNumberGenerator

于 2012-10-22T10:06:25.013 に答える
1

グーグルはあなたに何も与えなかったのですか?私はそれを非常に疑っています。

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

    // Generate all the random numbers you need.
}

予定通りに電話する必要があるTimer場合は、アラームが鳴ったときに次の番号にのみ電話をかけるように使用します。

于 2012-10-22T09:48:30.933 に答える
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);
    }
}
于 2012-10-22T09:58:29.077 に答える
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;
    }
}
于 2012-10-22T09:57:56.487 に答える