Home

Das Botenproblem

Thema: Wahrscheinlichkeitsrechnung

Ausgangslage

Es soll eine Nachricht verschickt werden. Es stehen zwei Botendienste zur Verfügung.

  • DienstA Ist doppelt so zu verlässig wie DienstB.
  • DienstA Ist doppelt so teuer wie DienstB.
  • DienstA hat eine Zuerlässigkeit von 0.8 d.h. 80% der Nachrichten kommen an.
  • DienstB hat eine Zuerlässigkeit von 0.4 d.h. 40% der Nachrichten kommen an.

Fragestellung

Ist es besser einen Boten von DienstA zu beauftragen oder 2 Boten von DienstB?

Lösungsweg

Wahrscheinlickeit das DienstA erfolgreich ist. $$ P(DienstA+) = 0.8 $$ Wahrscheinlickeit das DienstA scheitert. $$ P(DienstA-) = 1 - P(DienstA+) = 0.2 $$

Wahrscheinlickeit das ein Bote von DienstB erfolgreich ist. $$ P(DienstB+) = 0.4 $$ Wahrscheinlickeit das ein Bote von DienstB scheitert. $$ P(DienstB-) = 1 - P(DienstB+) = 0.6 $$

DienstB hat eine doppelt so hohe Erfolgswahrscheinlichkeit wie DienstA. $$ P(DienstA+) = 2 * P(DienstB+) $$

Beide Boten von DienstB scheitern. $$ P(DienstB--) = 1 - P(DienstB+) * 1 - P(DienstB+) $$ $$ P(DienstB--) = 1 - 0,4 * 1 - 0,4 = 0.36 $$

Mindestens eine Bote von DienstB ist erfolgreich. $$ P(minDienstB+) = 1 - P(DienstB--) = 1 - 0.36 = 0.64 $$

Ergebnis

Die berechnete Erfolgswahrscheinlickeit von DienstB liegt bei 0.64. Die gegebene Wahrscheinlicket von DienstA liegt bei 0.8. Somit ist es besser DienstA zu nutzen.

Überprüfung - formel

Der ermittelte Wert P(minDienstB+) = 0.64 beinhaltet drei Szenarien.

  • Der ein oder andere Bote von DienstB ist erfolgreich P(DienstB+). Welches mit mit einer Wahrscheinlichkeit von 0.4 vorgegeben war.

  • Oder beide Boten von DienstB sind erfolgreich. $$ P(DienstB++) = P(DienstB+) * P(DienstB+) = 0.4 * 0.4 = 0.24 $$

Somit ist P(minDienstB+) = 0.64 auch das Gleich wie $$ P(DienstB+) + P(DienstB++) = 0.4 + 0.24 = 0.64 $$

Überprüfung - durch ausprobieren

Die Botengänge von DienstA und DienstB werden je 10.000 mal simuliert.

In [34]:
import random
iterations = 10000
countDienstBSuccess = 0
countDienstASuccess = 0

for i in range(iterations):
    if(random.random() < 0.4 or random.random() < 0.4):
        countDienstBSuccess += 1

    if(random.random() < 0.8):
        countDienstASuccess += 1

print('DienstA Erfolgswahrscheinlickeit: '+ str(countDienstASuccess/iterations))
print('DienstB Erfolgswahrscheinlickeit: '+ str(countDienstBSuccess/iterations))
DienstA Erfolgswahrscheinlickeit: 0.8001
DienstB Erfolgswahrscheinlickeit: 0.6467
Impressum