Получить лучшее случайное значение с Groovy - PullRequest
0 голосов
/ 01 марта 2019

Я использую следующий код Groovy для выбора случайных элементов из списка.

Random rnd = new Random()
log.info("Random element:" + list[rnd.nextInt(list.size)])

В большинстве случаев я получаю предыдущий или следующий элемент как "случайное" значение.

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Пример с заполнением.

В прошлом я обнаружил, что при генерации случайных чисел они не были достаточно «случайными», и я пробовал несколько других способов сделать их более случайными.

Например,

Date date = new Date();
def now = date.getTime();
log.info(now);  // This value is the number of millis since January 1, 1970

Random rnd = new Random();
rnd.setSeed(now); // Seed the Random with the millis value

def play = randomValue.nextInt(10);  // Value in brackets is the max number of interest
log.info(play);

Когда я не работаю в диапазонах и мне просто нужно случайное значение с X-цифрой, я сделал что-то вроде ...

randomValue = new Random();
val1 = randomValue.nextInt(10);
val2 = randomValue.nextInt(10);
val3 = randomValue.nextInt(10);
val4 = randomValue.nextInt(10);
val5 = randomValue.nextInt(10);

orderRef = val1.toString() + val2.toString() + val3.toString()+ val4.toString()+ val5.toString();
0 голосов
/ 04 марта 2019

Попробуйте это

def <T> T getRandomElement(List<T> list) {
    if (list) {
        Collections.shuffle(list)
        list.first()
    }
}

Имейте в виду, что Collections.shuffle изменяет список.Это может иметь значение, если есть ссылки на список в другом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...