0
ExponentialDistribution exp = new ExponentialDistribution(4.0); 
     for(int i = 1; i < 20; i++){ 
      timestamp[i] = (int)exp.sample() + 1+timestamp[i-1]; 

Здесь timestamp представляет собой массив целых чисел, и ему присваивается случайное значение с указанным выше условием. Что делает (int) exp.sample() и как он присваивает случайное значение i?Как работает (int) exp.sample() в коде?

+3

Идея не имеет. Что такое 'ExponentialDistribution'? –

+0

Видимо, он находится в пакете apache.commons: http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/distribution/ExponentialDistribution.html Основная причина, по которой я делюсь этим, в качестве оправдания иметь осмысленный комментарий, который я также могу сказать: ваше имя просто должно быть ссылкой на The Who, правильно? –

+4

'(int) exp.sample()' вызывает метод 'sample()' в объекте, на который ссылается 'exp', затем возвращает возвращаемое значение' int'. Все *** очень *** базовый материал Java. Предложение: Изучите Java. – Andreas

ответ

0

Из ExponentialDistribution API: http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/distribution/ExponentialDistribution.html#sample()

общественной двойная выборка()

Генерировать случайное значение отобранного из этого распределения. Реализация по умолчанию использует метод инверсии.

Алгоритм Описание: эта реализация использует метод инверсии для генерации экспоненциально распределенных случайных значений из равномерного .

Итак, когда вы видите (int)exp.sample(), мы преобразуем его в это случайное значение, которое оно выбрало. exp - это пример ExponentialDistribution(4.0), который мы создали, поэтому метод exp.sample() ExponentialDistributionsample().

Теперь для (int).

Размещение типа объекта или примитивного типа в скобках (в этом случае (int)) перед другим объектом/примитивом называется «литье». Casting variables in Java

Довольно много, так sample() возвращает double, но timestamp магазины ints, нам нужно переключить один из их типов (они должны совпадать), и это waaaaay легче изменить exp.sample() «с.

Итак, в целом, это говорит: «Возьмите объект exp, позвоните по этому методу sample(), а затем преобразуйте его в int».

+0

Этот материал также прошел, но я не понимаю, как создается следующий вывод. –

+0

timestamp дает значение timestamp [i] и запускает дает (int) exp.sample().Я хочу знать, существует ли определенный набор чисел, из которых выполняется побег, или он зависит от i в состоянии цикла? ........ timestamp = 9 ran = 8, timestamp = 10 ran = 7 , метки времени = 13 побежало = 6, метки времени = 26, побежало = 6, метки времени = 34, побежала = 3, временной метки = 35, побежала = 7, timestamp40ran3 timestamp41ran3 timestamp43ran7 timestamp45ran timestamp48ran9 timestamp51ran11 timestamp53ran10 timestamp58ran3 timestamp63ran5 timestamp65ran3 tim estamp67ran8 timestamp68ran3 timestamp72ran3 –

+0

Я не вижу 'ran', и то, что вы только что прокомментировали, на 100% неразборчиво для меня. Но я обновил свое объяснение. Если вы следуете за тем, как он захватывает значение из 'sample()', он просто захватывает его из экспоненциального дистрибутива со средним значением 4. Если вы хотите узнать еще больше о том, как он это делает, вот исходный код: http : //commons.apache.org/proper/commons-math/apidocs/src-html/org/apache/commons/math3/distribution/ExponentialDistribution.html –

0

Класс ExponentialDistribution генерирует псевдослучайное число, соответствующее Exponential Distribution. Это псевдо, потому что оно не является случайным. Он использует уравнение для генерации каждого случайного числа, которое вы получаете.

Метод exp.sample() возвращает следующее случайное число в последовательности. Используя (int), вы получаете только целую часть.

Смежные вопросы