|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/g_htm_c/gsb1r_c.htm
Дата изменения: Tue Oct 28 17:48:32 2014 Дата индексирования: Sun Apr 10 00:51:36 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий gsb1r_c.zip |
Тексты тестовых примеров tgsb1r_c.zip |
Генерация массива псевдослучайных чисел, имеющих бета-распределение.
Генерируются псевдослучайные числа, с плотностью распределения
f(x) = x(P-1)*(1-x)(Q-1)*(Г(P+Q)/Г(P)*(Q)) , 0≤x≤1 , P>0, Q>0.
Здесь:
P и Q - параметры бета-распределения,
Г - гамма функция.
| 1. |
Johnk,M.D., "Erzung von betaverteiler_c und gammaverteiler_c zufallzahlen", Metrica, 8(2), 1964. |
| 2. |
Phillips, Don T., and Beightler, Charles S., "Procedure for generating gamma variates with non-integer parameter sets", Journal of Statistical Computation and Simulation, 1, 1972, 203. |
int gsb1r_c (integer *iseed, real *p, real *q, integer *n,
real *r__)
Параметры
| iseed - | целая переменная, значение которой перед обращением к подпрограмме может быть любым целым числом в пределах [1,2147483646]; по окончании работы ей присваивается новое значение, котоpое может быть использовано при последующем вхождении в подпрограмму; |
| p - | заданный параметр бета - распределения (тип: вещественный); |
| q - | заданный параметр бета - распределения (тип: вещественный); |
| n - | заданное количество генерируемых псевдослучайных чисел (тип: целый); |
| r - | вещественный массив длины n, содержащий вычисленные псевдослучайные числа. |
Версии: нет
Вызываемые подпрограммы
| gsu1r_c - | генерация массива псевдослучайных чисел, pавномеpно распределенных в интервале (0,1); |
Замечания по использованию
| Время работы подпрограммы pастет с pостом p и q. |
int main(void)
{
/* Local variables */
extern int gsb1r_c(int *, float *, float *, int *, float *);
static int n;
static float p, q, r__[3];
static int iseed;
p = .5f;
q = .8f;
iseed = 1432518450;
n = 3;
gsb1r_c(&iseed, &p, &q, &n, r__);
printf("\n %10i \n",iseed);
printf("\n %16.7e %16.7e %16.7e \n",r__[0],r__[1],r__[2]);
return 0;
} /* main */
Результаты:
r(1) = 0.364229459422
r(2) = 0.959182891531
r(3) = 0.132878061951