Ist dieses Programmieraufgaben richtig?

2 Antworten

Erstellt zwei Arrays namens Zahl1 und Zahl2 mit den Zahlen von 1 bis 10. Mischt dann die Zahlen von Zahl2, indem ihr wiederholt zwei zufällige Plätze vertauscht. (Wenn beim Auslosen der Plätze beide gleich sind, ist das kein Problem.)

Der erste Teil Deines Codes sieht korrekt aus.

Modelliert dann die Wahrscheinlichkeit dafür, dass in Zahl1 und Zahl2 mindestens an einer Stelle die gleiche Zahl vorkommt.

Der zweite Teil ist nach meinem Verständnis nicht richtig. Die Aufgabenstellung verstehe ich so, dass die Wahrscheinlichkeit ermittelt werden soll, dass an der gleichen Stelle beider Arrays dieselbe Zahl vorkommt, z. B. stimmen hier die Zahlen an 5. Stelle überein:

Zahl1: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Zahl2: 5, 7, 0, 8, 4, 2, 3, 1, 9, 6

Ich würde wie folgt vorgehen:

uebereinstimmungen = 0
for index in range(10):
    if Zahl1[index] == Zahl2[index]:
        uebereinstimmungen += 1

wahrscheinlichkeit = uebereinstimmungen / 10

print("Wahrscheinlichkeit:", wahrscheinlichkeit)
# oder als Prozentzahl:
print("Wahrscheinlichkeit:", wahrscheinlichkeit * 100, "%")

Hier wird die Anzahl an Übereinstimmungen gezählt. Wenn z. B. drei Zahlen übereinstimmen, wird 0,3 bzw. 30 % ausgegeben.

Rechnerisch/mathematisch gesehen ist es aber anders: Die Wahrscheinlichkeit, dass zwei Zufallszahlen von 1 bis 10 verschieden sind, liegt bei 0,9 bzw. 90 % und dass dies 10-mal vorkommt, 0,9¹⁰ ≈ 0,349 = 34,9 %. Dass in Zahl1 und Zahl2 an mindestens einer Stelle die gleiche Zahl vorkommt, ist demnach zu 1 − 0,9¹⁰ ≈ 0,651 = 65,1 % wahrscheinlich.

Sieht richtig aus. Führe den Code doch aus, dann siehst du, ob das Ergebnis richtig ist.

Woher ich das weiß:Hobby

Timski1 
Beitragsersteller
 26.10.2023, 16:59

Ne, kommt immer 1,0 raus. Ist auch der falsche Ansatz gewesen

havefunidont  26.10.2023, 17:27
@Timski1

Doch ist der korrekte Ansatz. Bei mir kommt beispielsweise folgendes raus:

Zahl1: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Zahl2: [1, 2, 10, 6, 4, 9, 5, 8, 3, 7]

Wahrscheinlichkeit: 1