Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Mathematik-Grundbegriffe für Programmierer

Das Urnenmodell – Ziehen mit und ohne Zurücklegen

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Bei vielen Datenstrukturen, aber auch Algorithmen, geht es darum, dass man aus einer vorgegebenen Menge von Daten (Zahlen) einen Wert nimmt und dann damit weiter rechnet. Dabei ist es extrem wichtig, zu unterscheiden, ob der weiterverarbeitete Wert in der Ursprungsmenge erhalten bleibt oder weggenommen wird. Das nennt man dann Ziehen mit oder ohne Zurücklegen.
04:24

Transkript

In diesem Video wollen wir uns das sogenannte Urnenmodell genauer ansehen. Das ist ein Gedankenmodell, das in der Wahrscheinlichkeitstheorie und in der Statistik benutzt wird, um verschiedene Zufallsexperimente auf eine einheitliche Weise zu modellieren, und zudem auf eine anschauliche Weise. Man geht davon aus, dass man eine sogenannte Urne zur Verfügung hat, ein fiktives Gefäβ, und dort sind eine gewisse Anzahl von Kugeln drin. Diese werden während des Experiments zufällig gezogen. Wichtig ist, bei jedem Zug haben alle in der Urne befindlichen Kugeln die gleiche Wahrscheinlichkeit, dass sie gezogen werden. Man kennt so etwas von Glücksspielen, Roulette, Lottozahlenziehung, aber auch Münzwurf. Auch das Geben von Spielkarten eines Kartenspiels entspricht dem Urnenmodell, sofern die Karten wirklich sauber gemischt wurden. Dabei unterscheidet man zwischen dem sogenannten Ziehen mit Zurücklegen, und dem Ziehen ohne Zurücklegen. Das Ziehen mit Zurücklegen ist beispielsweise ein Münzwurf, denn die Münze verändert sich nicht nach Durchführung eines Experimentes. Ein Ziehen ohne Zurücklegen wäre die Ziehung der Lottozahlen. Ich habe hier ein kleines Java-Programm, das das Ziehen mit Zurücklegen simuliert. Dabei gehe ich davon aus, dass ich diese Lottoziehung durchführen möchte, aber nicht beachte, dass jede neugezogene Zahl wieder aus der Menge von 1 bis 49 Zahlen gezogen wird. Eine einmal gezogene Zahl wird also nicht aus der Menge der zur Verfügung stehenden Zahlen entfernt. Dieser Quellcode hier ist also quasi eine Art fehlerhafte Umsetzung der Ziehung einer Lottozahl. Dieser Algorithmus per se ist korrekt, aber er ist eben kein Ziehen ohne Zurücklegen, sondern ein Ziehen mit Zurücklegen. In dem Code wird ein Zufallsmechanismus benutzt, und dann werden eine gewisse Anzahl, also sieben in dem Fall, von Ziehungen durchgeführt: Sechs Zahlen und eine Zusatzzahl. Und dann werden die gezogenen Zahlen ausgegeben. An der Stelle wird jede Zahl, die pro Durchlauf ermittelt wird, aus der Menge von 1 bis 49 gezogen. Also ein Ziehen mit Zurücklegen. Und das entspricht keiner realen Ziehung der Lottozahlen. Wenn wir ein Ziehen ohne Zurücklegen haben wollen, dann müssen wir den Code modifizieren. Wir müssen uns merken, welche Zahl schon gezogen wurde. Und sofern bei einer nächsten Ziehung diese Zahl noch einmal gezogen wird, müssen wir die Ziehung verwerfen. Das können wir mit diesem Code hier machen. Die Codierung steht jetzt nicht im Fokus. Aber Sie sehen vielleicht, dass ich hier erst schaue, ob eine aktuell gezogene Zahl bereits in der bisher gezogenen Menge der Zahl vorhanden ist, und wenn ja setze ich eine Boolean-Variable, also die Wahrheits-Variable auf "true", und breche den gesamten Vorgang ab. Ich gebe dann noch eine Meldung aus, dass eine Zahl bereits vorhanden ist, verwerfe die Ziehung, und dann ziehe ich erneut. Sofern die Zahl noch nicht vorhanden ist, gehe ich ganz normal durch, und nehme die gezogene Zahl in mein Array auf. Diese programmiertechnische Umsetzung spielt wie gesagt keine Rolle, ob das jetzt Java ist oder eine andere Sprache, oder was wir simulieren, ich habe hier mit zwei Beispielcodes die Umsetzung des Verfahrens Ziehen ohne Zurücklegen/ Ziehen mit Zurücklegen demonstriert, beide sind die wesentlichen Bestandteile des sogenannten Urnenmodells.

Mathematik-Grundbegriffe für Programmierer

Lernen Sie die Themenbereiche und Verfahren aus der Mathematik kennen, die bei der täglichen Programmierarbeit zum Einsatz kommen.

2 Std. 54 min (40 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Erscheinungsdatum:04.10.2016
Aktualisiert am:19.12.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!