Как конвертировать java.util.random в int - PullRequest
0 голосов
/ 30 апреля 2019

Я использую java.util.random с начальным числом (новый Random (System.currentTimeMillis ())

  • Мне нужно преобразовать это в int (моя бизнес-логика)
  • Я пытался использовать .nextInt (), но это не помогает

// моя бизнес-логика - код ниже находится в цикле и предназначен для генерации другого случайного числачисло каждый раз //

int randomNumber=(int) Math.floor(inputParam1 * (new Random(System.currentTimeMillis())).nextInt()));

Ожидаемый выход: новое случайное число, которое будет генерироваться каждый раз, в формате int

Фактический вывод: - с помощью nextInt () оно генерируеткаждый раз одно и то же число - без преобразования в Int, я не могу использовать тип данных «Random»
с моей переменной int, показанной выше

Ответы [ 3 ]

1 голос
/ 30 апреля 2019

Не создавайте новый экземпляр Random каждый раз, когда вы хотите сгенерировать Double.

Вы можете создать один экземпляр и затем вызывать его всякий раз, когда вам нужен новый double.

Random rand = new Random(System.currentTimeMillis());

// loop starts here

  double randomNumber = Math.floor(inputParam1 * rand.nextDouble());

// If you want an integer up to inputParam1 as it seems, you can do:

  int randomInt = (int) randomNumber;

Вы также можете использовать Math.random(), как кто-то уже предложил.

0 голосов
/ 30 апреля 2019

Преобразование приведенного ниже кода в int не имеет смысла.

Math.floor(inputParam1 * (new Random(System.currentTimeMillis())).nextDouble()))

И, пожалуйста, проверьте этот ответ Использование генератора случайных чисел с текущим временем и без

Самая важная часть сверху ссылка:

Если вы хотите, чтобы ваши случайные последовательности были одинаковыми между запусками, вы можете укажите семя.

0 голосов
/ 30 апреля 2019

Я не уверен, почему вы приводите его к int

double randomNumber = new Random (System.currentTimeMillis ()). NextDouble (); это даст случайное двойное число от 0 до 1

...