Подтвердить что ты не робот

Как сгенерировать список случайных чисел?

Это может быть наименее важный вопрос Scala, но он меня беспокоит. Как бы я создал список из n случайных чисел. Что я до сих пор:

def n_rands(n : Int) = {
 val r = new scala.util.Random
 1 to n map { _ => r.nextInt(100) } 
}

Что работает, но для меня это выглядит не очень Scalarific. Я открыт для предложений.

ИЗМЕНИТЬ

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

1 to 20 map r.nextInt

Но индекс каждой записи в возвращаемом списке также является верхней границей последнего. Первое число должно быть меньше 1, второе меньше 2 и т.д. Я запускал его три или четыре раза и заметил: "Хм, результат всегда начинается с 0..."

4b9b3361

Ответ 1

Вы можете использовать Don solution или:

Seq.fill(n)(Random.nextInt)

Обратите внимание, что вам не нужно создавать новый объект Random, вы можете использовать сопутствующий объект по умолчанию Random, как указано выше.

Ответ 2

Как насчет:

import util.Random.nextInt
Stream.continually(nextInt(100)).take(10)

Ответ 3

относительно вашего EDIT,

nextInt может принимать аргумент Int как верхнюю границу для случайного числа, поэтому 1 to 20 map r.nextInt совпадает с 1 to 20 map (i => r.nextInt(i)), а не более полезной ошибкой компиляции.

1 to 20 map (_ => r.nextInt(100)) делает то, что вы намеревались. Но лучше использовать Seq.fill, поскольку это более точно отражает то, что вы делаете.