Erzeugung von zufälligen Dezimal- und Ganzzahlen in Python, einschließlich random(), randrange() und randint()

Geschäft

Zufallszahlen können mit den Funktionen random(), uniform(), randange() und randint() aus dem Modul random der Python-Standardbibliothek erzeugt werden.

Das Modul random ist in der Standardbibliothek enthalten, so dass keine zusätzliche Installation erforderlich ist. Natürlich müssen Sie es importieren.

Hier finden Sie die folgenden Informationen.

  • random.random()(Fließkommazahl zwischen 0,0 und 1,0)
  • random.uniform()(Beliebiger Bereich von Gleitkommazahlen)
  • Generieren Sie Zufallszahlen, die einer Normalverteilung, einer Gaußschen Verteilung usw. folgen.
  • random.randrange()(Ganzzahl mit beliebigem Bereich und Schrittweite)
  • random.randint()(Eine ganze Zahl in einem beliebigen Bereich)
  • Generierung einer Liste mit Zufallszahlen als Elemente
    • Liste mit zufälligen Gleitkommazahlen
    • Liste der ganzzahligen Zufallszahlen
  • Initialisierung des Zufallszahlengenerators (Festlegen des Zufallszahlen-Seeds)

Im folgenden Artikel wird beschrieben, wie man Elemente einer Liste nach dem Zufallsprinzip extrahiert oder sortiert.

random.random() (Fließkommazahl zwischen 0,0 und 1,0)

Die Funktion random() des Moduls random erzeugt eine zufällige Fließkommazahl vom Typ float, die zwischen 0,0 und 1,0 liegt.

import random

print(random.random())
# 0.4496839011176701

random.uniform() (Beliebiger Bereich von Gleitkommazahlen)

uniform(a, b)Die Funktionen dieses Zufallsmoduls erzeugen Zufallszahlen vom Typ Gleitkommazahl float in einem der folgenden Bereiche

  • a <= n <= b
  • b <= n <= a
import random

print(random.uniform(100, 200))
# 175.26585048238275

Die beiden Argumente können entweder größer oder kleiner sein; wenn sie gleich sind, geben sie natürlich nur diesen Wert zurück. Der Rückgabewert ist immer ein Float.

print(random.uniform(100, -100))
# -27.82338731501028

print(random.uniform(100, 100))
# 100.0

Das Argument kann auch als Float angegeben werden.

print(random.uniform(1.234, 5.637))
# 2.606743596829249

Ob der Wert von b in die Spanne einbezogen wird, hängt von der folgenden Rundung ab, wie dokumentiert.
a + (b-a) * random.random()

Ob der Endpunktwert b im Bereich liegt oder nicht, hängt von der Gleitkommarundung in der folgenden Gleichung ab
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation

Generieren Sie Zufallszahlen, die einer Normalverteilung, einer Gaußschen Verteilung usw. folgen.

Die obigen Funktionen random() und uniform() erzeugen gleichmäßig verteilte Zufallszahlen, aber es gibt auch Funktionen zur Erzeugung von Gleitkommazahlen, die der folgenden Verteilung folgen.

  • Betaverteilung:random.betavariate()
  • Exponentialverteilung:random.expovariate()
  • Gamma-Verteilung:random.gammavariate()
  • Gaußsche Verteilung:random.gauss()
  • Lognormalverteilung:random.lognormvariate()
  • Normalverteilung:random.normalvariate()
  • Von-Mises-Verteilung:random.vonmisesvariate()
  • Pareto-Verteilung:random.paretovariate()
  • Weibull-Verteilung:random.weibullvariate()

Die Parameter der einzelnen Verteilungen werden durch Argumente angegeben. Siehe die offizielle Dokumentation für Details.

random.randrange() (Ganzzahl mit beliebigem Bereich und Schrittweite)

randrange(start, stop, step)
Die Funktion dieses Zufallsmoduls gibt ein zufällig ausgewähltes Element aus den folgenden Elementen zurück.
range(start, stop, step)

Wie bei range() können auch hier die Argumente start und step weggelassen werden. Wenn sie weggelassen werden, ist start=0 und step=1.

import random

print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(random.randrange(10))
# 5

Das Argument step kann so gesetzt werden, dass eine gerade oder ungerade Zufallszahl oder eine Zufallszahl, die ein Vielfaches von drei ist, erzeugt wird.

Wenn z. B. der Startwert gerade und der Schrittwert=2 ist, können nur gerade ganze Zahlen im Bereich zufällig ermittelt werden.

print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]

print(random.randrange(10, 20, 2))
# 18

random.randint() (Eine ganze Zahl in einem beliebigen Bereich)

randint(a, b)
Die Funktion dieses Zufallsmoduls liefert die folgende zufällige ganze Zahl int.
a <= n <= b
randrange(a, b + 1)Äquivalent dazu; beachten Sie, dass der Wert von b ebenfalls in den Bereich einbezogen wird.

print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74

Generierung einer Liste mit Zufallszahlen als Elemente

In diesem Abschnitt wird erklärt, wie man das Zufallsmodul der Standardbibliothek verwendet, um eine Liste mit Zufallszahlen als Elemente zu erzeugen.

Liste von Zufallszahlen mit Gleitkomma-Gleitkomma

Um eine Liste zu erzeugen, deren Elemente Gleitkommazufallszahlen sind, kombinieren Sie die Funktionen random() und uniform() mit der Notation für das Listenverständnis.

import random

print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]

Im obigen Beispiel wird range() verwendet, aber auch Listen und Tupel sind für die gewünschte Anzahl von Elementen möglich. Weitere Einzelheiten zu Listenauffassungen finden Sie in dem folgenden Artikel.

Liste der ganzzahligen int-Zufallszahlen

Bei der Erzeugung einer Liste, deren Elemente ganzzahlige Zufallszahlen sind, kann die Kombination der obigen randange() und randint() mit der Notation für das Listenverständnis zu doppelten Werten führen.

print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]

Wenn Sie eine zufällige Folge ganzer Zahlen ohne Duplikation erstellen wollen, extrahieren Sie die Elemente von range() mit einem beliebigen Bereich unter Verwendung von random.sample().

print(random.sample(range(10), k=5))
# [6, 4, 3, 7, 5]

print(random.sample(range(100, 200, 10), k=5))
# [130, 190, 140, 150, 170]

Weitere Informationen über random.sample() finden Sie im folgenden Artikel.

Initialisierung des Zufallszahlengenerators (Festlegen des Zufallszahlen-Seeds)

Durch Übergabe einer beliebigen ganzen Zahl an die Funktion seed() des Zufallsmoduls kann der Zufallszahlen-Seed festgelegt und der Zufallszahlengenerator initialisiert werden.

Nach der Initialisierung mit demselben Seed wird der Zufallswert immer auf dieselbe Weise erzeugt.

random.seed(0)
print(random.random())
# 0.8444218515250481

print(random.random())
# 0.7579544029403025

random.seed(0)
print(random.random())
# 0.8444218515250481

print(random.random())
# 0.7579544029403025
Copied title and URL