Nur eine Anmerkung, dies sind Pseudozufallszahlen und sie sind nicht kryptografisch sicher. Verwenden Sie dies auf keinen Fall, wenn Sie nicht möchten, dass ein Angreifer Ihre Zahlen errät. Verwenden Sie das secretsModul für bessere Zufallszahlen. Referenz: docs.python.org/3/library/random.html
466
import random
print(random.randint(0,9))
random.randint(a, b)
Gibt eine zufällige ganze Zahl N zurück, so dass a <= N <= b.
In neueren Python-Versionen scheint die Obergrenze exklusiv zu sein (dh es randint(0,9)wird niemals 9 zurückgegeben). Dies spiegelt sich nicht in der Online-Dokumentation wider, sondern in der integrierten Hilfe.
Yly
134
Versuche dies:
from random import randrange, uniform
# randrange gives you an integral value
irand = randrange(0,10)# uniform gives you a floating-point value
frand = uniform(0,10)
Dies würde die Antwort verbessern und sollte hinzugefügt werden. Die sicherheitsbewussteren Antworten sollten immer hinzugefügt werden, falls verfügbar.
SudoKid
31
Wählen Sie die Größe des Arrays (in diesem Beispiel habe ich die Größe 20 gewählt). Verwenden Sie dann Folgendes:
import numpy as np
np.random.randint(10, size=(1,20))
Sie können erwarten, dass eine Ausgabe der folgenden Form angezeigt wird (jedes Mal, wenn Sie sie ausführen, werden unterschiedliche zufällige Ganzzahlen zurückgegeben; daher können Sie erwarten, dass sich die Ganzzahlen im Ausgabearray von dem unten angegebenen Beispiel unterscheiden ).
Es ist auch hilfreich zu wissen, wie Numpy ein zufälliges Array mit einer bestimmten Größe erzeugen kann, nicht nur eine einzelne Zufallszahl. (Docs: numpy.random.randint )
jkdev
28
Versuchen Sie dies durch random.shuffle
>>>import random
>>> nums = range(10)>>> random.shuffle(nums)>>> nums
[6,3,5,4,0,1,2,9,8,7]
Im Fall von fortlaufenden Zahlen randintoder randrangewahrscheinlich die beste Wahl, aber wenn Sie mehrere unterschiedliche Werte in einer Sequenz haben (dh a list), können Sie auch Folgendes verwenden choice:
>>>import random
>>> values = list(range(10))>>> random.choice(values)5
choice funktioniert auch für einen Artikel aus einer nicht kontinuierlichen Stichprobe:
Was ist, wenn wir mehr Zahlen aus der Sequenz wollen?
Gunjan Naik
Wenn sie ersatzlos sein sollten : random.sample. Mit Ersetzung könnten Sie ein Verständnis verwenden mit choice: zum Beispiel für eine Liste, die 3 zufällige Werte mit Ersetzung enthält:[choice(values) for _ in range(3)]
MSeifert
18
Während viele Beiträge zeigen , wie man eine Zufallszahl, fragt die ursprüngliche Frage , wie Zufallszahl erzeugen s (Plural):
Wie kann ich in Python zufällige Ganzzahlen zwischen 0 und 9 (einschließlich) generieren?
Zur Verdeutlichung zeigen wir hier, wie mehrere zufällige Ganzzahlen erhalten werden.
Gegeben
>>>import random
lo =0
hi =10
size =5
Code
Mehrere zufällige Ganzzahlen
# A>>>[lo + int(random.random()*(hi - lo))for _ in range(size)][5,6,1,3,0]
# B>>>[random.randint(lo, hi)for _ in range(size)][9,7,0,7,3]
# C>>>[random.randrange(lo, hi)for _ in range(size)][8,3,6,8,7]
# D>>> lst = list(range(lo, hi))>>> random.shuffle(lst)>>>[lst[i]for i in range(size)][6,8,2,5,1]
# E>>>[random.choice(range(lo, hi))for _ in range(size)][2,1,6,9,5]
1 Nämlich @ John Lawrence Aspden, @ ST Mohammed, @ SiddTheKid, @ user14372, @ zangw, et al. 2 @prashanth erwähnt dieses Modul mit einer ganzen Zahl. 3 Demonstriert von @Siddharth Satpathy
Ja. Danke für den Link. Aber ich wollte damit meinen, dass Sie Ihre Antwort hätten verbessern können, indem Sie Details angegeben haben, bevor Sie nur zwei Codezeilen zitiert haben. Aus welchem Grund würde jemand es vorziehen, es anstelle von etwas zu verwenden, das bereits eingebaut ist. Nicht, dass Sie dazu verpflichtet wären.
Simón
9
>>>import random
>>> random.randrange(10)3>>> random.randrange(10)1
So erhalten Sie eine Liste mit zehn Beispielen:
>>>[random.randrange(10)for x in range(10)][9,0,4,0,5,7,4,3,6,8]
Dies ist eher ein mathematischer Ansatz, funktioniert aber zu 100%:
Angenommen, Sie möchten die random.random()Funktion verwenden, um eine Zahl zwischen aund zu generieren b. Um dies zu erreichen, gehen Sie einfach wie folgt vor:
Von der Dokumentationsseite für das Zufallsmodul :
Warnung: Die Pseudozufallsgeneratoren dieses Moduls sollten nicht aus Sicherheitsgründen verwendet werden. Verwenden Sie os.urandom () oder SystemRandom, wenn Sie einen kryptografisch sicheren Pseudozufallszahlengenerator benötigen.
random.SystemRandom , das in Python 2.4 eingeführt wurde, gilt als kryptografisch sicher . Es ist weiterhin in Python 3.7.1 verfügbar, das zum Zeitpunkt des Schreibens aktuell ist.
Statt string.digits, rangekönnte zusammen vielleicht mit einem Verständnis für einige der anderen Antworten verwendet werden. Mix and Match nach Ihren Bedürfnissen.
Mit OpenTURNS können Sie nicht nur die zufälligen Ganzzahlen simulieren, sondern auch die der UserDefineddefinierten Klasse zugeordnete Verteilung definieren.
Im Folgenden werden 12 Ergebnisse der Verteilung simuliert.
import openturns as ot
points =[[i]for i in range(10)]
distribution = ot.UserDefined(points)# By default, with equal weights.for i in range(12):
x = distribution.getRealization()print(i,x)
Fügen Sie einfach Zeichen wie 'ABCD' und 'abcd' oder '^! ~ = -> <' hinzu, um den zu ziehenden Zeichenpool zu ändern, und ändern Sie den Bereich, um die Anzahl der generierten Zeichen zu ändern.
Antworten:
Versuchen:
Weitere Informationen: http://docs.python.org/library/random.html#random.randrange
quelle
secrets
Modul für bessere Zufallszahlen. Referenz: docs.python.org/3/library/random.htmlGibt eine zufällige ganze Zahl N zurück, so dass a <= N <= b.
Dokumente: https://docs.python.org/3.1/library/random.html#random.randint
quelle
randint(0,9)
wird niemals 9 zurückgegeben). Dies spiegelt sich nicht in der Online-Dokumentation wider, sondern in der integrierten Hilfe.Versuche dies:
quelle
Dies erzeugt 10 Pseudozufallszahlen im Bereich von 0 bis einschließlich 9.
quelle
Das
secrets
Modul ist neu in Python 3.6. Das ist besser als dasrandom
Modul für Kryptografie- oder Sicherheitszwecke.So drucken Sie zufällig eine Ganzzahl im Inklusivbereich 0-9:
Einzelheiten finden Sie in PEP 506 .
quelle
Wählen Sie die Größe des Arrays (in diesem Beispiel habe ich die Größe 20 gewählt). Verwenden Sie dann Folgendes:
Sie können erwarten, dass eine Ausgabe der folgenden Form angezeigt wird (jedes Mal, wenn Sie sie ausführen, werden unterschiedliche zufällige Ganzzahlen zurückgegeben; daher können Sie erwarten, dass sich die Ganzzahlen im Ausgabearray von dem unten angegebenen Beispiel unterscheiden ).
quelle
Versuchen Sie dies durch
random.shuffle
quelle
Ich würde eines der folgenden versuchen:
1.> numpy.random.randint
2.> numpy.random.uniform
3.> random.randrange
4.> random.randint
Geschwindigkeit:
► np.random.randint ist der schnellste , gefolgt von np.random.uniform und random.randrange . random.randint ist am langsamsten .
► Sowohl np.random.randint als auch np.random.uniform sind viel schneller (~ 8 - 12 mal schneller) als random.randrange und random.randint .
Anmerkungen:
quelle
%timeit
in Ihrer Umgebung?Im Fall von fortlaufenden Zahlen
randint
oderrandrange
wahrscheinlich die beste Wahl, aber wenn Sie mehrere unterschiedliche Werte in einer Sequenz haben (dh alist
), können Sie auch Folgendes verwendenchoice
:choice
funktioniert auch für einen Artikel aus einer nicht kontinuierlichen Stichprobe:Wenn Sie es "kryptografisch stark" benötigen, gibt es auch eine
secrets.choice
in Python 3.6 und neuer:quelle
random.sample
. Mit Ersetzung könnten Sie ein Verständnis verwenden mitchoice
: zum Beispiel für eine Liste, die 3 zufällige Werte mit Ersetzung enthält:[choice(values) for _ in range(3)]
Während viele Beiträge zeigen , wie man eine Zufallszahl, fragt die ursprüngliche Frage , wie Zufallszahl erzeugen s (Plural):
Zur Verdeutlichung zeigen wir hier, wie mehrere zufällige Ganzzahlen erhalten werden.
Gegeben
Code
Mehrere zufällige Ganzzahlen
Beispiel für zufällige Ganzzahlen
Einzelheiten
Einige Beiträge zeigen, wie mehrere zufällige Ganzzahlen nativ generiert werden . 1 Hier sind einige Optionen, die die implizite Frage beantworten:
random.random
Gibt einen zufälligen Float im Bereich zurück[0.0, 1.0)
random.randint
Gibt eine zufällige Ganzzahl zurück,N
so dassa <= N <= b
random.randrange
Alias zurandint(a, b+1)
random.shuffle
mischt eine Sequenz an Ort und Stellerandom.choice
Gibt ein zufälliges Element aus der nicht leeren Sequenz zurückrandom.choices
Rückkehrk
Auswahlen aus einer Population (mit Ersatz, Python 3.6 oder höher)random.sample
Gibtk
eindeutige Auswahlen aus einer Population zurück (ohne Ersatz): 2Siehe auch R. Hettingers Vortrag über Chunking und Aliasing anhand von Beispielen aus dem
random
Modul.Hier ist ein Vergleich einiger zufälliger Funktionen in der Standard Library und Numpy:
Sie können auch schnell eine von vielen Verteilungen in Numpy in eine Stichprobe zufälliger Ganzzahlen konvertieren . 3
Beispiele
1 Nämlich @ John Lawrence Aspden, @ ST Mohammed, @ SiddTheKid, @ user14372, @ zangw, et al. 2 @prashanth erwähnt dieses Modul mit einer ganzen Zahl. 3 Demonstriert von @Siddharth Satpathy
quelle
Wenn Sie numpy verwenden möchten, verwenden Sie Folgendes:
quelle
So erhalten Sie eine Liste mit zehn Beispielen:
quelle
Zufällige Ganzzahlen zwischen 0 und 9 erzeugen.
Ausgabe:
quelle
random.sample
ist eine andere, die verwendet werden kannquelle
Am besten verwenden Sie die Import-Zufallsfunktion
oder ohne Bibliotheksimport:
Hier entfernen die Popitems einen beliebigen Wert und geben ihn aus dem Wörterbuch zurück
n
.quelle
Dies ist eher ein mathematischer Ansatz, funktioniert aber zu 100%:
Angenommen, Sie möchten die
random.random()
Funktion verwenden, um eine Zahl zwischena
und zu generierenb
. Um dies zu erreichen, gehen Sie einfach wie folgt vor:num = (b-a)*random.random() + a;
Natürlich können Sie mehr Zahlen generieren.
quelle
Von der Dokumentationsseite für das Zufallsmodul :
random.SystemRandom , das in Python 2.4 eingeführt wurde, gilt als kryptografisch sicher . Es ist weiterhin in Python 3.7.1 verfügbar, das zum Zeitpunkt des Schreibens aktuell ist.
Statt
string.digits
,range
könnte zusammen vielleicht mit einem Verständnis für einige der anderen Antworten verwendet werden. Mix and Match nach Ihren Bedürfnissen.quelle
Mit OpenTURNS können Sie nicht nur die zufälligen Ganzzahlen simulieren, sondern auch die der
UserDefined
definierten Klasse zugeordnete Verteilung definieren.Im Folgenden werden 12 Ergebnisse der Verteilung simuliert.
Dies druckt:
Die Klammern sind da , weil
x
eine istPoint
in 1-Dimension. Es wäre einfacher, die 12 Ergebnisse in einem einzigen Aufruf zu generierengetSample
:würde produzieren:
Weitere Details zu diesem Thema finden Sie hier: http://openturns.github.io/openturns/master/user_manual/_generated/openturns.UserDefined.html
quelle
Ich hatte besseres Glück damit für Python 3.6
Fügen Sie einfach Zeichen wie 'ABCD' und 'abcd' oder '^! ~ = -> <' hinzu, um den zu ziehenden Zeichenpool zu ändern, und ändern Sie den Bereich, um die Anzahl der generierten Zeichen zu ändern.
quelle