Текст подпрограммы и версий ( Фортран )
gsp1r.zip , gsp2r.zip
Тексты тестовых примеров ( Фортран )
tgsp1r.zip , tgsp2r.zip
Текст подпрограммы и версий ( Си )
gsp1r_c.zip , gsp2r_c.zip
Тексты тестовых примеров ( Си )
tgsp1r_c.zip , tgsp2r_c.zip
Текст подпрограммы и версий ( Паскаль )
gsp1r_p.zip , gsp2r_p.zip
Тексты тестовых примеров ( Паскаль )
tgsp1r_p.zip , tgsp2r_p.zip

Подпрограмма:  GSP1R (версия GSP2R)

Назначение

Генерация массива псевдослучайных чисел, распределенных по закону Пуассона.

Математическое описание

Величина K будет распределена по закону Пуассона с параметром RLAM

     P{ K= m }  =  exp (-RLAM) * RLAMm / m !

 если
     exp (-RLAM)  ≥  U1 U2 ... UK UK+1  ≥  exp (-RLAM) * UK+1 , 

где U1, U2,...,UK, UK+1 - независимые случайные величины, равномерно распределенные в интервале (0,1).

Другой способ генерации (реализованный в версии GSP2R) состоит в том, что K выбирается из неpавенства

  K
  ∑   exp (-RLAM) RLAM i / i !  ≤  U  <
  i=0
                                                       K+1
                                                   <   ∑   exp (-RLAM) RLAM i / i !
                                                        i=0 

где U - случайная величина, pавномеpно распределенная в интервале (0, 1).

Schaffer, Henry E., "Algorithm 369, generator of random numbers satisfying the Poisson distribution", Comm. ACM, 13(1), 1970, 49.

Snow, Richard H., "Algorithm 342, generator of random numbers satisfying the Poisson distribution", Comm. ACM, 11(12), 1968, 819.

Использование

    SUBROUTINE  GSP1R (RLAM, ISEED, N, K, IERR) 

Параметры

RLAM - заданный параметр распределения Пуассона, значение которого должно лежать в интервале (0, 40) (тип: вещественный);
ISEED - целая переменная, значение которой перед обращением к подпрограмме может быть любым целым числом в пределах [1, 2147483646]; по окончании работы ей присваивается новое значение, котоpое может быть использовано при последующем вхождении в подпрограмму;
N - заданное количество генерируемых псевдослучайных чисел (тип: целый);
K - целый массив длины N, содержащий полученные псевдослучайные числа;
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом:
IERR=65 - когда значение RLAM меньше 0 или больше 40.

Версии

GSP2R - генерация массива псевдослучайных чисел, pаспределенных по закону Пуассона.

Вызываемые подпрограммы

GSU1R - генерация массива псевдослучайных чисел, pавномеpно распределенных в интервале (0, 1);
UTGS10 - подпрограмма выдачи диагностических сообщений при работе подпрограмм GSP1R и GSP2R.

Замечания по использованию

  Подпрограмма GSP2R работает быстрее чем GSP1R в тех случаях, когда генерируется большое количество псевдослучайных чисел с неизменным RLAM, т.е. когда, либо велико N при однократном вызове GSP2R, либо когда происходят частые обращения к GSP2R с одинаковым RLAM.

Пример использования

       DIMENSION  K(5)
       ISEED = 123456
       RLAM = 0.5
       N = 5
       CALL  GSP1R (RLAM, ISEED, N, K, IERR)

Результат:  

       K  =  ( 1, 0, 0, 0, 3 ) ;   IERR = 0