Случайное число, извлекаемое из массива MATLAB Пуассона - PullRequest
0 голосов
/ 17 сентября 2018

Раньше это было просто в MATLAB и все еще в Python. У меня есть массив лямбд, который я ищу, чтобы получить распределенные по Пуассону случайные числа для вставки в гистограмму.

lambda = [0.1 0.4]

Раньше я мог поставить туда:

n = poissrnd(a,10)

и получить обратно массив из 10 строк по 2 столбца случайно сгенерированных чисел Пуассона для каждой лямбды (каждый столбец, представляющий 10 выборок из каждой лямбды). По некоторым причинам это изменилось - и я не уверен почему.

В Python - это все еще выполнимо, просто введя:

n = np.random.poisson(lambda, [10,2])

Я бился головой о стол - любая помощь будет признательна ...

1 Ответ

0 голосов
/ 17 сентября 2018

Let

N = 10;
lambda = [0.1 0.4];
  • Без цикла: из документации ,

    R = poissrnd(lambda) генерирует случайные числа из Пуассонараспределение со средним параметром lambda.lambda может быть вектором, матрицей или многомерным массивом.Размер R равен размеру lambda.

    Итак:

    result = poissrnd(repmat(lambda, N, 1));
    
  • С forцикл:

    result = NaN(N, numel(lambda)); % preallocate
    for k = 1:numel(lambda)
        result(:,k) = poissrnd(lambda(k), [N 1]);
    end
    
  • С arrayfun:

    result = cell2mat(arrayfun(@(x) poissrnd(x, [N 1]), lambda, 'uniformoutput', false));
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...