Как я могу использовать случайные числа в Groovy? - PullRequest
33 голосов
/ 22 ноября 2010

Я использую этот метод:

def getRandomNumber(int num){
    Random random = new Random()
    return random.getRandomDigits(num)
}

, когда я звоню, я пишу println getRandomNumber(4)

, но у меня есть ошибка

No signature of method: java.util.Random.getRandomDigits() is applicable for argument types: (java.lang.Integer) values: [4]

Примечание: я используюэтот метод в другом классном классе, и он работает без ошибок

Ответы [ 5 ]

51 голосов
/ 22 ноября 2010

Нет такого метода, как java.util.Random.getRandomDigits.

Чтобы получить случайное число, используйте nextInt:

return random.nextInt(10 ** num)

Также вы должны создать случайный объект один раз при запуске приложения:

Random random = new Random()

Не следует создавать новый случайный объект каждый раз, когда вы хотите новое случайное число.Это разрушает случайность.

22 голосов
/ 04 апреля 2014

Генерация псевдослучайных чисел от 1 до [UPPER_LIMIT]

Вы можете использовать следующее для генерации числа от 1 до верхнего предела.

Math.abs(new Random().nextInt() % [UPPER_LIMIT]) + 1

Вот конкретный пример:

Пример - Генерация псевдослучайных чисел в диапазоне от 1 до 600:

Math.abs(new Random().nextInt() % 600) + 1

Это будет генерировать случайное числов пределах досягаемости для вас.В этом случае 1-600.Вы можете изменить значение 600 на любое необходимое в диапазоне целых чисел.


Генерация псевдослучайных чисел между [LOWER_LIMIT] и [UPPER_LIMIT]

Если выЕсли вы хотите использовать нижнюю границу, которая не равна 1, тогда вы можете использовать следующую формулу.

Math.abs(new Random().nextInt() % ([UPPER_LIMIT] - [LOWER_LIMIT])) + [LOWER_LIMIT]

Вот конкретный пример:

Пример. Генерация псевдослучайных чисел в диапазоне от 40 до 99:

Math.abs( new Random().nextInt() % (99 - 40) ) + 40

. При этом генерируется случайное число в диапазоне от 40 до 99.

13 голосов
/ 22 ноября 2010

Обычно я нахожу RandomUtils (из Apache commons lang) более простым способом генерации случайных чисел, чем java.util.Random

3 голосов
/ 21 марта 2018

Если вы хотите генерировать случайные числа в диапазоне, включая «0», используйте следующее, в то время как «max» является максимальным числом в диапазоне.

Random rand = new Random()
random_num = rand.nextInt(max+1)
1 голос
/ 15 июня 2017

Например, допустим, что вы хотите создать случайное число от 50 до 60, вы можете использовать один из следующих методов.

new Random().nextInt()%6 +55

new Random (). NextInt ()% 6 возвращает значение в диапазоне от -5 до 5. И когда вы добавляете его в 55, вы можете получить значения в диапазоне от 50 до 60

Второй метод:

Math.abs(new Random().nextInt()%11) +50

Math.abs (new Random (). NextInt ()% 11) создает значение в диапазоне от 0 до 10. Позже вы можете добавить50, который даст вам значение от 50 до 60

...