Javaで適切な疑似乱数を作成するために、指定した日付を使用して乱数生成を実行しようとしています。私はCalendar
クラスを使用し、その日のミリ秒数をカウントすることに決めました。これはある程度はうまくいきましたが、私がプログラムを始めると、私は異なるランダムな値しか得られません。プログラムでこれ以上実行すると、私には同じ番号が与えられます。私はThread.sleep()
を使用して実際の時間に違いがあることを確認していますが、同じ数字が得られます。 私はここにカレンダークラスと生成番号のエラー
public long genRNG()
{
long mask = 0xFFFF000000000000L;
long randomValue = seed & mask;
seed = 0x5D588B656C078965L * cal.get(Calendar.MILLISECOND) + 0x0000000000269EC3;
return randomValue;
}
(別のクラスから)を呼び出すとしていますHERESに私の方法は、私の主な方法
public static void main(String[] args) throws InterruptedException
{
Seed key = new Seed();
for (int x = 0; x <=10; x++)
{
Thread.sleep(200);
System.out.println(key.genRNG());
}
}
だと与えられた出力:
-7389844038561562624
-7389844038561562624
-7389844038561562624
-7389844038561562624
-7389844038561562624
-7389844038561562624
-7389844038561562624
-7389844038561562624
-7389844038561562624
'seed'変数の値を変更し、' randomValue'を返しています。 – Andremoniy
もっと重要なことに、あなたは 'cal'を変更していません。 –
randomValueはSeed but Andreで構成されています –