Bernulli sxemi#11726

Bernulli sxemi (Həll təhlili)

Bernulli sınağı — iki mümkün nəticəsi olan eksperimentdir:

Sınaq o zaman "bernullivari" adlanır ki, o müstəqildir və onun uğur ehtimalı bütün sınaqlar ərzində sabit qalır.

Bernulli sınaqları sxemi — hər biri Bernulli sınağı olan müstəqil sınaqlar seriyasıdır. Sınaqların sayını ilə işarə edək. Hər sınaqda uğur ehtimalı və uğursuzluq ehtimalı 1 - p dəyişməz qalır.

Nümunə kimi pulun dəfələrlə atılmasını göstərmək olar. Əgər bizi atışdan neçəsində gerb düşməsi maraqlandırırsa, bu da Bernulli sınaqları sxemidir.

Bernulli sınağından ibarət seriyada uğurların sayı binomial paylanmaya tabedir. Tutaq ki, — sınaqda uğurların sayını bildirən təsadüfi kəmiyyətdir. Onda:

P(X = k) = C_n^k \cdot p^k \cdot (1 - p)^{n - k}

burada

Sübut. Elə konkret sınaqlar ardıcıllığına baxaq ki, onda:

Sınaqlar müstəqil olduğundan, bu konkret ardıcıllığın ehtimalı ayrı-ayrı sınaqların ehtimallarının hasilinə bərabərdir:

Dəqiq uğur əldə etmək üçün, onların məhz hansı yerdə baş verəcəyini seçmək lazımdır. Bu cür üsulların sayı C_n^k kombinasiyalarının sayına bərabərdir.

Beləliklə, dəqiq uğurun olma ehtimalı aşağıdakına bərabərdir

P(X = k) = C_n^k \cdot p^k \cdot (1 - p)^{n - k}

Binomial əmsalın qiymətini həqiqi ədədlərdə hesablamaq üçün aşağıdakı üsuldan istifadə edək:

C_n^k = {n! \over k! (n - k)!}, \\ ln~C_n^k = ln~n! - ln~k! - ln~(n - k)!

Məlumdur ki, ln~n! = ln~(1 \cdot 2 \cdot ... \cdot n) = ln~1 + ln~2 + ... + ln~n

qiymətlərini massivinin xanalarında yadda saxlayırıq. Sonra hesablayırıq

res = ln~n! - ln~k! - ln~(n - k)! = lf[n] - lf[k] - lf[n - k],

bundan sonra isə

C_n^k = e^{res}

Nümunə

Birinci testdə n = 8 sınaq aparılır. Hər sınaqda hadisəsinin baş vermə ehtimalı p = 0.3-ə bərabərdir. Biz hadisəsinin dəqiq k = 2 dəfə baş vermə ehtimalını tapmaq istəyirik. Axtarılan ehtimal bərabərdir:

P(X = 2) = C_8^2 \cdot 0.3^2 \cdot 0.7^6 ≈ 0.296475

Alqoritmin reallaşdırılması

iş massivini elan edək, burada lf[i] = ln~i! = ln~1 + ln~2 + ... + ln~i.

#define MAX 1001
double lf[MAX];

Giriş məlumatlarını oxuyuruq.

scanf("%d %d", \u0026n, \u0026k);
scanf("%lf", \u0026p);
q = 1 - p;

massivini doldururuq.

lf[1] = 0;
for (i = 2; i \u003c= n; i++)
  lf[i] = lf[i - 1] + log(i);

Binomial əmsalın qiymətini res = C_n^k hesablayırıq.

res = lf[n] - lf[k] - lf[n - k];
res = exp(res);

Cavabı res = C_n^k \cdot p^k \cdot (1 - p)^{n - k} hesablayırıq.

for (i = 0; i \u003c k; i++)
  res = res * p;
for (i = 0; i \u003c n - k; i++)
  res = res * q;

Cavabı çap edirik.

printf("%lf\n", res);