Текст подпрограммы и версий ( Фортран ) 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 |
Генерация массива псевдослучайных чисел, распределенных по закону Пуассона.
Величина 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