Ответ 1
Вы можете использовать Don solution или:
Seq.fill(n)(Random.nextInt)
Обратите внимание, что вам не нужно создавать новый объект Random
, вы можете использовать сопутствующий объект по умолчанию Random, как указано выше.
Это может быть наименее важный вопрос 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..."
Вы можете использовать Don solution или:
Seq.fill(n)(Random.nextInt)
Обратите внимание, что вам не нужно создавать новый объект Random
, вы можете использовать сопутствующий объект по умолчанию Random, как указано выше.
Как насчет:
import util.Random.nextInt
Stream.continually(nextInt(100)).take(10)
относительно вашего 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
, поскольку это более точно отражает то, что вы делаете.