| |
|
|
p.specht
| Die Binomialverteilung BinVtlg() ist eine "diskrete" Verteilung - eine die sich auf Einzelereignisse bezieht. Sie beantwortet die Frage, wie wahrscheinlich es ist, daß bei N Münzwürfen (Einzelwahrscheinlichkeit p = 50% per Kopf) oder bei Würfel-Würfen (´6´ ist 1 von 6 Möglichkeiten, Einzelwahrscheinlichkeit daher p = 1/6 = 16.6667 %) - oder bei einer beliebigen anderen bekannten Grundsituation - bei N-maligem werfen (= bei N Versuchen) genau k mal "Erfolg" (eine per die Fragestellung günstige Situation) eintritt.
Durch Aufsummieren vieler Versuche kann man naturalmente auch herausbekommen, wie wahrscheinlich es ist, daß k oder mehr Erfolge eintreten.
Summiert man alle diese k-Wahrscheinlichkeiten der jeweils N Versuche, muss naturalmente 100% herauskommen.
WindowTitle upper$("Binomialverteilungsdichte: P(n Versuche, k mal Erfolg,"+\
" bei Einzelerfolgs-Wahrscheinlichkeit p)")
'(CL) CopyLeft 2018-04 by P.Specht, Wien. OHNE GEWÄHR!
WindowStyle 24:Window %maxx/4,10 - %maxx/2,%maxy-60
Proc Binom_nCr :parameters N&,k&
case k&=0:return 1.0:case N&<=0:return 0.0:case (2*k&)>N&:k&=N&-k&
var P!=1:whileloop k&:P!=P!*(N&-k&+&Loop)/&Loop:endwhile:return P!
endproc
Proc Fac :parameters N&:casenot N&:return 1.0
if N&>100000:Print " *** FAC() TOO BIG! *** ";:beep:return 0.0:endif
if N&<171:var p!=1:whileloop N&:p!=p!*&Loop:endwhile:return p!
else :var s!=0:whileloop N&:s!=s!-lg(&Loop):endwhile:set("decimals",17)
return str$( round(10^(int(s!)-s!),13))+"e+"+str$(int(-s!) ):endif
EndProc
Proc BinVtlg :parameters N&,k&,p!
case (n&<=0) or (k&>n&) or (p!<=0) (p!>=1):return (k&=0)
case (p!>=1):return (k&>0)
return Binom_nCr(N&,k&)*p!^k&*(1-p!)^(n&-k&)
endproc
Declare p!,n&,k&,su!
Nochmal:
CLS:font 2
print "\n Nötige Vorinformation:"
print "\n Erfolgswahrscheinlickeit eines Einzelversuchs:":font 0
print "\n (z.B. Münze p = 50 %; ´6´= 1 Würfelseite von 6 Möglichen: p = 16.6667 %)"
font 2:print "\n p_Einzel [%] ?: ";
input p!:case (p!<0) or (p!>100):goto "Nochmal"
REPEAT
Print "\n Gesamtzahl Versuche [0=Restart]?: ";:input n&:case n&=0:BREAK
print " Zufällige Anzahl an Erfolgen ?: ";:input k&
print " Wahrscheinlichkeit per genau diese Anzahl: "; 100*BinVtlg(N&,k&,p!/100);" [%]"
if (N&>1) and (N&<1000):print " ... per diese Anzahl und mehr: ";:su!=0
Whileloop k&,N&:su!=su!+100*BinVtlg(N&,&Loop,p!/100):endwhile:case su!>100:su!=100
print su!,"[%]"
endif
UNTIL 0
goto "Nochmal"
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 27.05.2021 ▲ |
|
|
|