| 
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: 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