×
produktlogotitle

Seite: bbb_zufall
Diese Seite wurde aktualisiert am 03.08.2021

LOGIN
Benutzer:
Passwort:
 
   if1.net-schulbuch.de

Das Python-System soll würfeln!

Unser Computer sollte eigentlich immer genau das machen, was wir sagen. Und er sollte auch - unabhängig von der Tageszeit, vom Wetter, von dem Raum, in dem er steht - bei gleicher Eingabe auch identische Ausgaben erzeugen. Man sagt, dass ein Computerprogramm sich deterministisch (= vorher bestimmbar) verhält.

Doch ein Würfel zeigt natürlich nicht immer dieselbe Augenzahl. Also kann ein Computer eigentlich nicht würfeln.

Jedoch haben die Entwickler von Python einen Weg gefunden, wie man mit einem Python-Befehl Zufallszahlen erzeugen kann, so dass bei jedem Aufruf dieses Befehls ein anderer (nicht vorhersehbarer) Wert erscheint.

Wie die Entwickler das genau gemacht haben, soll hier nicht näher diskutiert werden. Da diese Zufallszahlen jedoch mit einem deterministischen Programm erzeugt werden, nennt man sie Pseudozufallszahlen.

Wichtig ist, dass wir auch die Pseudozufallszahlen nicht vorhersagen können, und dass sie sich über den Wertebereich genauso gleichmäßig verteilen wie echte Zufallszahlen.

 

Um Pseudozufallszahlen zu erzeugen, muss man in einem Python-Programm einen sog. Modul importieren.

Python-Module

Module werden verwendet, um den Code eines umfangreicheren Software-Projekts verwenden zu können, ohne diesen Coode in die eigene Python-Datei (z.B. durch Kopieren oder Abtippen) schreiben zu müssen.

Es gibt im Python-System sehr viele solcher Module, die nur nutzbar sind, wenn man sie mit einem Import-Befehl geladen hat. Dazu gibt es zwei Möglichkeiten:

  1. Man importiert das gesamte Modul.
    • Dazu benutzt man die Code-Zeile import modName, wenn modName der Name des Modul ist.
    • Dann kann man alle in dem Modul modName verfügbaren Anweisungen benutzen:
      • Wenn z.B. die Anweisung tueWas() in dem Modul existiert, kann man sie in der Form modName.tueWas() im eigenen Programm nutzen.
  2. Man importiert nur einige der in dem Modul vorhandenen Anweisungen.
    • Wenn man also z.B. mit den obigen Bezeichnungen lediglich die Anweisung tueWas() nutzen möchte, kann man den Import mittels from modName import tueWas angeben. Dann steht in dem eigenen Programm die Zeile tueWas().

Das folgende Codeschnipsel in Python simuliert jetzt einen 6-seitigen Würfel:

import random
augenzahl = random.randint(1,6)
print("Geworfen =", augenzahl)

Wie man sieht:

werden immer andere Zahlen von dem Pseudozufallsgenerator erzeugt.

In dem Modul random gibt es neben randint noch viele weitere hilfreiche Anweisungen, die nach dem Import nutzbar sind. Welche Module es gibt und Anweisungen dort zur Verfügung stehen, kann man in diversen Dokumentationen finden.

Man kann alternativ jedoch auch nur die benötigte(n) Anweisung(en) importieren, so dass der Code dann wie folgt aussieht:

from random import randint
augenzahl = randint(1,6)
print("Geworfen =", augenzahl)

 

Erzeugen einer ganzzahligen Pseudozufallszahl

Die Python-Anweisung

random.randint(untergrenze, obergrenze)

erzeugt eine Zufallszahl aus dem Bereich [untergrenze, obergrenze]. Die erzeugten Zahlen sind für den Benutzer nicht vorhersagbar und in dem angegebenen Bereich zufällig verteilt.

 

Aufgabe
  1. Ändere das Python-Programm so ab, dass man damit einen Münzwurf (Wappen oder Zahl) simulieren kann.
  2. Schreibe ein kleines Python-Programm, das als Ausgabe die Augensumme zweier Würfel angibt.

 

Python kennt auch andere Zufallswerte

Betrachten wir einmal den folgenden Zeitschriftenauszug:

... Der Basketballprofi Shaquille O’Neal erzielte in der 2002/2003-Saison mit 62 Prozent den besten Wert seiner Karriere, das heißt, er verwandelte 62 Prozent seiner Freiwürfe und verwarf 38 Prozent. ...

Jetzt steht Shaquille auf der Abwurflinie. Wird er den Freiwurf verwandeln?

Wir benutzen jetzt Python, um das Ergebnis zu simulieren. Dazu nutzen wir einmal mehr das Modul random, in dem es eine Anweisung mit dem Namen random() gibt

 

 

Ein beliebiger Zufallswert

Die Python-Anweisung

random.random()

liefert eine Dezimalzahl aus dem Bereich [0, 1). 

Die eckige Klammer [ besagt, dass der gelieferte Wert ggf. auch 0 sein kann; jedoch sagt uns die runde Klammer (, dass eine 1 als Ergebnis der Anweisung nicht auftauchen kann.

 

Um jetzt den Freiwurf bei dem beschriebenen Basketball-Spiel zu simulieren, können wir uns den Wert mit Hilfe dieser Anweisung anzeigen lassen. Ist dieser Wert kleiner oder gleich 0.62, wird der Wurf verwandelt. Probiere es in deiner Python-Umgebung aus.

 

Aufgabe

Im letzen Jahr haben von den 880 Schülerinnen und Schülern deiner Schule 871 die Abiturprüfung bestanden. 

Schreibe ein kleines Python-Programm, das diese Situation simuliert.

 

 

 

Impressum
© 2023  Net-Schulbuch.de
10.00  0.5478  8.1.28