Я пытаюсь создать случайное число с использованием заданной даты для создания хороших псевдослучайных чисел в Java. Я решил использовать класс Calendar
и считать миллисекунды в день. Это работало в некоторой степени, но я могу получить только другое случайное значение, когда я запускаю программу. Запуск его еще раз в программе просто даст мне тот же номер. Я использую Thread.sleep()
, чтобы убедиться, что есть реальная разница во времени, но я все равно получаю одинаковые номера. Heres мой метод, который я называю (из другого класса)Ошибка с классом календаря и генерирующими номерами
public long genRNG()
{
long mask = 0xFFFF000000000000L;
long randomValue = seed & mask;
seed = 0x5D588B656C078965L * cal.get(Calendar.MILLISECOND) + 0x0000000000269EC3;
return randomValue;
}
и вот мой основной метод
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, хотя Andre –