Mathematik studieren mit Python: Lösen einfacher Wahrscheinlichkeitsprobleme

Wahrscheinlichkeit

Es gibt ein Problem, das nicht mit Python zusammenhängt. Stellen Sie die Einstellungen so ein, dass Sie mit dem Computer zufrieden sind und lösen.

(Q1)

Der Spieler zog eine der 52 Spielkarten ohne den Joker heraus und legte sie verdeckt ab. Als der Händler zufällig 3 Blätter vom verbleibenden Stapel auswählte und sie nach vorne drehte, waren sie alle Diamanten.

  1. Eine Person vom Hersteller des Trump kam und sagte mir, dass der Trump, den ich jetzt benutze, ein defektes Produkt mit einem Duplikat A des Diamanten anstelle des A des Herzens ist. Finden Sie die Wahrscheinlichkeit, dass die erste Karte, die Sie extrahiert haben, ein Diamant ist.
  2. Als zusätzliche Information wurde festgestellt, dass der Händler eine Waffe angebracht und absichtlich nur den Diamanten extrahiert hatte. Finden Sie die Wahrscheinlichkeit, dass die erste Karte, die Sie extrahiert haben, ein Diamant ist.

(Lösung)

  1. Bedingtes Wahrscheinlichkeitsproblem.
P_0 = sym.Rational(1, 4)
P_0dia = sym.Rational(13*12*11, 51*50*49)
P_dia = sym.Rational(14*13*12, 52*51*50)
P_0 * P_0dia / P_dia
\frac{143}{686}
  1. \frac{7}{26}

(Q2)

Es gibt eine Lotterie mit einer Gewinnwahrscheinlichkeit von $ p $. Wenn alle Menschen auf der Erde einmal viel ziehen, beträgt die Wahrscheinlichkeit, alle zu verlieren, 0,5 oder mehr Wie viel muss $ p $ sein? Die Bevölkerung der Erde beträgt 7,2 Milliarden.

(Lösung) Ungefähr mit Poisson-Verteilung.

N = 7200000000
F = sym.exp(-p*N) - 0.5
sym.solve([F], [p])
p < 9.627 \cdot 10^{-11}

Wenn Sie so viel versuchen, beträgt die Normalverteilung übrigens etwa das 7-fache der Standardabweichung. In der Pareto-Verteilung ist es nicht verwunderlich, dass Werte auftreten, die mehr als 100 Millionen Mal voneinander entfernt sind.

(Q3)

  1. Das Glas enthält 12 rote und 8 schwarze Kugeln. Finden Sie die Wahrscheinlichkeit, dass Sie 2 rote Bälle haben, wenn Sie 3 Bälle herausnehmen.
  2. Versuchen Sie, $ 3 \ cdot 10 ^ {24} $ rote Kugeln und $ 2 \ cdot 10 ^ {24} $ schwarze Kugeln herauszunehmen. Finden Sie die Wahrscheinlichkeit, dass die Anzahl der herausgenommenen roten Kugeln $ 2 \ cdot 10 ^ {24} $ beträgt.
  3. Wenn Sie (2) versuchen, sei $ x $ der absolute Wert der Differenz zwischen der Anzahl der herausgenommenen roten Kugeln und $ 2 \ cdot 10 ^ {24} $. Wenn die Wahrscheinlichkeit, dass das Ergebnis kleiner als $ x $ ist, $ P_x $ ist, wie viel ist $ x $ für $ P_x> 0,5 $?

(Lösung)

  1. Dies wird als hypergeometrische Verteilung bezeichnet.
import sympy as sym
A = sym.functions.combinatorial.numbers.nC(12, 2)
B = sym.functions.combinatorial.numbers.nC(8, 1)
C = sym.functions.combinatorial.numbers.nC(20, 3)
A*B/C
\frac{44}{95}
  1. Die Nummer nahe der Avocadro-Nummer wurde eingestellt. Probleme aus der statistischen Dynamik. Aus der Definition der supergeometrischen Verteilung $ \begin{eqnarray} P &=& \frac{C(4 \cdot 10^{24}, 2 \cdot 10^{24}) \cdot C(2 \cdot 10^{24}, 10^{24})}{C(6 \cdot 10^{24}, 3 \cdot 10^{24})} \\\\ &=& \frac{(4 \cdot 10^{24})!{(3 \cdot 10^{24})!}^2}{(6 \cdot 10^{24})!(2 \cdot 10^{24})!{(10^{24})!}^2} \end{eqnarray}$ Verwenden Sie die Näherung von $ \ log (n!) \ Eqsim n \ log n -n + \ frac {1} {2} \ cdot \ log (2 \ pi n) $.
log_n = n * sym.log(n) - n + sym.log(2 * Pi * n) / 2
A1 = log_n.subs([(n, 4*10**24)])
A2 = log_n.subs([(n, 3*10**24)])
B1 = log_n.subs([(n, 6*10**24)])
B2 = log_n.subs([(n, 2*10**24)])
B3 = log_n.subs([(n, 1*10**24)])
Log_P = A1 + 2 * A2 - B1 - B2 - 2 * B3
sym.N(Log_P, 10)

−28.0006535 $\therefore P \simeq e^{-28} \simeq 6.9144 \cdot 10^{-13}$ 3. Die Anzahl der roten Kugeln $ X $ wird durch die Binomialverteilung $ B (3 * 10 ^ {24}, 2/3) $ angenähert. Weiter angenähert durch eine Normalverteilung, $Y = \frac{X-2\cdot 10^{24}}{\sqrt{3 \cdot 10^{24}\cdot 2/3 \cdot 1/3}}\\\\ = \sqrt{\frac{3}{2}} \frac{X-2 \cdot 10^{24} }{10^{12}}$ $ Y $ folgt einer Standardnormalverteilung. Die kumulative Dichte übersteigt 0,5 aus der Standardnormalverteilungstabelle -0.68 X=2 \cdot 10^{24} \pm 0.68 \cdot \sqrt{\frac{2}{3}} 10^{12} x \simeq 5.55 \cdot 10^{11}

(Q4)

koushi.png

Stellen Sie sich einen zufälligen Gang vor, der vom zentralen gelben Teil des Dreiecksgitters in der Abbildung ausgeht und sich jede Sekunde mit gleicher Wahrscheinlichkeit zum benachbarten Gitter bewegt. Sei $ P_t $ die Wahrscheinlichkeit, nach $ t $ Sekunden in der Mitte zu sein.

  1. Suchen Sie $ P_ {10} $.
  2. Suchen Sie $ \ lim_ {n \ to \ infty} P_n $.

(Lösung)

  1. Aus Symmetriegründen beträgt die Wahrscheinlichkeit, an jedem Punkt in Abstand 1 zu sein, $ Q_t $ und die Wahrscheinlichkeit, an jedem Punkt in Abstand 2 zu sein, $ R_t . $P_t+6Q_t+3R_t=1$$
N = 1
P = 0
Q = sym.Rational(1, 6)
R = 0
Pn = sym.Rational(3, 2) * q
Qn = p/6 + q/2 + r/2
Rn = q/2
while N < 10:
    N += 1
    Ptemp = Pn.subs([(q, Q)])
    Qtemp = Qn.subs([(p, P), (q, Q), (r, R)])
    Rtemp = Rn.subs([(q, Q)])
    P = Ptemp
    Q = Qtemp
    R = Rtemp
print(N)
print(P)
print(Q)
print(R)

10 171/1024 341/3072 57/1024 2.

F1 = sym.Rational(3, 2) * q - p
F2 = p/6 + q/2 + r/2 - q
F3 = q/2 - r
Ft = p + 6*q + 3*r - 1
sym.solve([F1, F2, F3, Ft], [p, q, r])
\\left \\{ p : \\frac{1}{6}, \\quad q : \\frac{1}{9}, \\quad r : \\frac{1}{18}\\right \\}

(Q5)

Angenommen, es werden $ n $ einheitliche Zufallszahlen im Bereich von 0 bis 65535 generiert.

  1. Ermitteln Sie den Wert von $ n $ mit einer Wahrscheinlichkeit, dass dieselbe Zufallszahl größer als 0,5 ist.
  2. Ermitteln Sie den Wert von $ n $, der mit einer Wahrscheinlichkeit 3 oder mehr der gleichen Zufallszahlen enthält, die 0,5 überschreiten.

(Lösung)

  1. Es ist ein Geburtstagsangriff.
def birthday(N, K):
    return sym.functions.combinatorial.numbers.nP(N, K)/N**K
N = 65536
K = 255 #Sie können von der Quadratwurzel ausgehen
P = 0.0
while P <= 0.5:
    K += 1
    P = 1 - birthday(N, K)
print(K)
sym.N(P, 10)

302 0.5007224895 2. Eine Kombination, bei der zwei identische Zufallszahlen in der $ K $ Zufallszahl von $ N $ Arten enthalten sind

\sum_{k=1}^{K/2} C(N-k,k)P(N,K-k)

Der Grenzteil von $ K / 2 $ hat keine große Wirkung. Fügen Sie ihn hinzu, ohne sich darum zu kümmern.

def birthday2(N, K, P1):
    return (sym.functions.combinatorial.numbers.nP(N,K) + P1) / N**K
def P1(N,K,X):
    return sym.functions.combinatorial.numbers.nC(N-X,X)*sym.functions.combinatorial.numbers.nP(N,K-X)
N = 65536
K = 300
P = 0.0
while P <= 0.5:
    K += 1
    L = 1
    SUM = 0
    while L <= K/2:
        SUM += P1(N, K, L)
        L += 1
    P = 1 - birthday2(N, K, SUM)
print(K)
sym.N(P, 10)

473 0.5035181768

Recommended Posts

Mathematik studieren mit Python: Lösen einfacher Wahrscheinlichkeitsprobleme
Einfacher gRPC in Python
Probleme in Python kombinieren
○○ Probleme im Fachbereich Mathematik mit Optimierung lösen
Einfache Regressionsanalyse mit Python
Lösen Sie Optimierungsprobleme mit Python
Einfacher IRC-Client mit Python
2015 Center Exam Math IIB Lösen mit Python
Erste einfache Regressionsanalyse in Python
Einfaches OAuth 2 mit Python (urllib + oauthlib)
Implementierung eines einfachen Algorithmus in Python 2
Führen Sie einen einfachen Algorithmus in Python aus
Einfache Gacha-Logik in Python geschrieben
Python studieren
Ein einfacher HTTP-Client, der in Python implementiert ist
Versuchen Sie, eine einfache Animation in Python zu zeichnen
Erstellen Sie eine einfache GUI-App in Python
Übergangswahrscheinlichkeit der in Python geschriebenen Markov-Kette
Zu beachtende Punkte bei der Lösung von DP-Problemen mit Python
Schreiben Sie eine einfache Giermethode in Python
Schreiben Sie ein einfaches Vim-Plugin in Python 3
Holen Sie sich mit Python die Niederschlagswahrscheinlichkeit aus XML
Richten Sie mit Python 3 einen einfachen HTTPS-Server ein
In Python ② erlernte statistische Wahrscheinlichkeitsverteilung für Testgrad 2
Einfache Pub / Sub-Programmhinweise in Python
Hinweise zur Implementierung einer einfachen Co-Filterung in Python
Erstellen Sie in Python ein einfaches Momentum-Investmentmodell
Lösen von Bewegungsgleichungen in Python (odeint)
Richten Sie einen einfachen SMTP-Server in Python ein
In Python ① erlernte statistische Wahrscheinlichkeitsverteilung für Testgrad 2
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
[Python] Beginne zu lernen
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.