Python Online
Home    .  
zufallszahlen

8. ZUFALLSZAHLEN

 

 

DU LERNST HIER...

 

wie du Zufallszahlen erzeugen kannst. Da der Zufall im täglichen Leben eine ausserordentlich grosse Rolle spielt, kannst du mit Zufallszahlen solche Abläufe auf dem Computer nachbilden (simulieren). Wie bei einem Würfelwurf sind Zufallszahlen meist gleichverteilt, d.h. treten mit gleicher Häufigkeit (Wahrscheinlichkeit) auf.

 

 

MUSTERBEISPIELE

  Du zeichnest 40 Sterne und legst ihre Position im Turtlefenster mit Zufallszahlen fest. Dazu brauchst du die Funktion randint() aus dem Modul random, die du zuerst importieren musst.

Die Funktion randint(a, b) liefert bei jedem Aufruf eine ganzzahlige Zufallszahl im Bereich a, b. Beispielsweise erhältst du zufällige Würfelzahlen mit randint(1, 6).

In deinem Programm zeichnest du 40 Sterne an zufälligen Positionen. Das Turtlefenster besitzt ein Koordinatensystem mit dem Nullpunkt in der Mitte und x und y im Bereich ca. -300 bis 300. Für die die Position der Sterne wählst du für x- und y-Koordinaten zufällige Zahlen im Bereich -250... 250. Die Funktion star() zeichnet einen einzelnen Stern. 

 


Programm:
from gturtle import *
from random import randint

def star():
    startPath()
    repeat 5:        
        forward(50)
        left(144)
    fillPath()    

makeTurtle()
setFillColor("blue")        
hideTurtle()

repeat 40:  
    x = randint(-250, 250)
    y = randint(-250, 250)
    setPos(x, y)
    star()
Programmcode markieren (Ctrl+C kopieren)
 

 

Random Walk
Die Turtle startet an der Homeposition (0, 0) und bewegt sich wiederholt (z. B. 50-mal) um 30 Schritte in einer zufällig gewählten Richtung vorwärts. Um die Bewegungsrichtung festzulegen, verwendest du Funktion heading(angle), wobei angle eine Zufallszahl zwischen 0 und 360 ist.

 
Programm:
from gturtle import *
from random import randint

makeTurtle()

repeat 50:
    angle = randint(0, 360)
    heading(angle)
    forward(30)
Programmcode markieren (Ctrl+C kopieren)

 

 

MERKE DIR...

 

from random import randint importiert die Funktion randint() aus dem Modul random. randint(a, b) erzeugt eine ganzzahlige Zufallszahl zwischen a und b, wobei a die kleinste und b die grösste Zahl ist.

 

 

ZUM SELBST LÖSEN

  1.
Zeichne 100 rote, 100 blaue und 100 gelbe Konfetti (dots) an zufällig gewählten Positionen.  


  2.

Zufällige n-ecke
In deinem Programm wird bei jedem Lauf eine zufällige ganze Zahl n zwischen 3 und 12 erzeugt. Die Turtle zeichnet danach ein entsprechendes regelmässiges n-eck und füllt es mit einer Farbe, die du selbst bestimmen kannst. Passe auch die Seitenlänge entsprechend an.

 

 

 

   

 

8-1
Fachliche Hinweise:

Es gibt zwei Möglichkeiten eine ganzzahlige Zufallszahl zu erzeugen:

1) Du importierst nur dir Funktion randint() aus dem Modul random und kannst diese dann direkt aufrufen

   from random import randint
   x = randint(1, 6)

2) Du importierts das ganze Modul random und rufst die Funktion randint() wie folgt auf:

   import random
   x = random.randint(1, 6)

-------------------------------------------------------------------------------

Das Modul random enthält auch die Funktion random().

   import random
   x = random.random()

erzeugt eine Zufallszahl mit 12 Dezimalstellen, grösser gleich 0 und kleiner als 1
(zum Beispiel. 0.854704980293) .
8-1
Fachliche Hinweise:

Für die Schreibweise von algebraischen Ausdrücken ist Folgendes zu beachten:

  • Zur Klammerung gibt es nur die runden Klammern, die immer als Klammerpaar gesetzt werden müssen. Die Abarbeitung erfolgt von "Innen nach Aussen"
  • Das Multiplikationszeichen * muss immer gesetzt werden, d.h. 2x muss als 2 * x geschrieben werden
  • Es gibt keinen durchgehenden Bruchstrich, d.h. Brüche müssen durch geeignete Klammerung geschrieben werden, beispielsweise
      (   a     / b + c als a / (b + c)
  • Für die Bindung bzw. der Rangfolge der Rechenoperationen gelten die gleichen Regeln wie in der Mathematik: + und - binden gleich stark, * und / ebenfalls; *  und / binden stärker als + und -.
  • Potenzen wie y = x2 können auf verschiedene Arten geschrieben werden:
    y = x * x
    y = x ** 2
    y  = math.pow(x, 2)

    Im letzten Fall muss noch import math im Programmkopf stehen
  • Leerschläge zwischen den Operationszeichen und Klammern können nach Belieben gesetzt werden. Es gehört zum guten Programmierstil, damit grosszügig umzugehen, aber insbesondere, sich immer an die gleichen selbstauferlegten Konventionen zu halten.
8-3
Didaktischer Hinweis:

Das Programm sollte noch "robust" gemacht werden, d.h. unsinnige Eingaben, die zu einem Programmabbruch führen, sollten mit einer Fehlermeldung zurückgewiesen werden, beispielsweise falls a grösser als c gewählt wird. Da if-Bedingungen noch nicht behandelt sind, wird diese Verbesserung auf später verschoben.

8-4
Fachlicher Hinweis:

Eigentlich wird auch in Python nur ein Funktionswert zurückgegeben, und zwar ein Tupel. Mit der Kommaschreibweise return a, b in der Funktion f() werden a und b automatisch in ein Tupel verpackt und bei der Zuweisung  x, y = f() automatisch wieder ausgepackt.