Генерация случайной последовательности с использованием Scala - PullRequest
1 голос
/ 14 апреля 2020

Мне нужно получить случайную последовательность из 100 значений от 10 ^ -10 до 10 ^ 10 и сохранить до Array с использованием Scala. Я попытался следовать, но это не сработало

Array(scala.math.pow(10,-10).doubleValue to scala.math.pow(10,10).intValue by scala.math.pow(10,5).toLong)

Может кто-нибудь помочь мне понять, как это сделать правильно?

1 Ответ

5 голосов
/ 14 апреля 2020

Так что вам нужно fill() массив с Random элементами.

import scala.util.Random

val rndm = new Random(1911L)
Array.fill(100)(rndm.between(math.pow(10,-10), math.pow(10,10)))
//res0: Array[Double] = Array(6.08868427907728E9
// , 3.29548545155816E9
// , 9.52802903383275E9
// , 7.981295238889314E9
// , 1.9462480080050848E9
// . . .

Это работает, потому что 2-й параметр метода fill() является "по имени", то есть переоценивается для каждого элемента.


ОБНОВЛЕНИЕ

Все не так чисто, если у вас нет метода .between() (Scala 2.13) .

Array.fill(100)(rndm.nextDouble())
     .map(_ * math.pow(10,10))

Обратите внимание, что на самом деле это слово имеет значение 0.0 вместо желаемого 0.0000000001. Маловероятно, что у вас будет слишком маленькая запись, особенно если взять только 100 образцов. Тем не менее, есть шаги, которые вы можете предпринять, чтобы избежать этого.

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