#wolfram-mathematica #poisson
#wolfram-mathematica #poisson
Вопрос:
Я ищу эквивалент приведенной ниже функции Matlab в Mathematica:
«R = poissrnd(lambda) генерирует случайные числа из распределения Пуассона со средним параметром lambda. лямбда может быть вектором, матрицей или многомерным массивом. Размер R равен размеру лямбда. «
Пример вывода функции приведен ниже.
b = 95.7165 95.7165 95.7165 95.7165 95.7165 98.9772 98.9772 98.9772 98.9772 0.3876
poissrnd(b)
ans =100 115 81 90 109 106 104 87 104 2
Как я мог сделать что-то подобное в Mathematica 8?
Ответ №1:
Распределение Пуассона определено только для целых чисел. Итак, вам нужно будет использовать RandomInteger с PoissonDistribution следующим образом:
poissrnd[lambda_]:=RandomInteger[PoissonDistribution[lambda]]
Использование:
b = {95.7165, 95.7165, 95.7165, 95.7165, 95.7165, 98.9772, 98.9772,
98.9772, 98.9772, 0.3876};
poissrnd /@ b
Out[1] = {104, 97, 67, 84, 96, 123, 93, 96, 100, 0}
Ответ №2:
Прочитав обширную онлайн-документацию Mathematica, особенно немного о PoissonDistribution
и ее пример построения графика, который указывает вам на PDF
. Это позволит вам вычислить значения распределения.
Обратите внимание, что, по моему личному опыту, для простых распределений быстрее просто подключить формулу распределения и использовать ее вместо причудливого PDF
подхода. Распределение Пуассона не слишком сложно.
Ответ №3:
В качестве альтернативы, вы могли бы использовать
In[2]:= lambda = {1.0, 2.05, 11.04}
Out[2]= {1., 2.05, 11.04}
In[3]:= Map[RandomVariate[PoissonDistribution[#]] amp;, lambda]
Out[3]= {0, 3, 11}