Willekeurige getallen kunnen worden gegenereerd met de functies random(), uniform(), randange(), en randint() in de random module van de Python standaardbibliotheek.
De random module is opgenomen in de standaard bibliotheek, dus geen extra installatie is nodig. Je moet hem natuurlijk wel importeren.
De volgende informatie wordt hier verstrekt.
random.random()
(Floating point getal tussen 0.0 en 1.0)random.uniform()
(Elk bereik van drijvende komma getallen)- Genereer willekeurige getallen die een normale verdeling, Gaussiaanse verdeling, enz. volgen.
random.randrange()
(Integer van willekeurig bereik en stap)random.randint()
(Een geheel getal in een willekeurig bereik)- Genereren van een lijst met willekeurige getallen als elementen
- Lijst van willekeurige drijvende-kommagetallen
- Lijst van gehele willekeurige getallen
- De willekeurige getallengenerator initialiseren (het zaad van de willekeurige getallen vastleggen)
Zie het volgende artikel over hoe elementen van een lijst willekeurig te extraheren of te sorteren.
- Verwante Artikelen:Willekeurige elementen uit een lijst kiezen in Python met choice(), sample(), choices()
- random.random() (Floating point getal tussen 0.0 en 1.0)
- random.uniform() (Elk bereik van drijvende komma getallen)
- Genereer willekeurige getallen die een normale verdeling, Gaussiaanse verdeling, enz. volgen.
- random.randrange() (Integer van willekeurig bereik en stap)
- random.randint() (Een geheel getal in een willekeurig bereik)
- Genereren van een lijst met willekeurige getallen als elementen
- De willekeurige getallengenerator initialiseren (het zaad van de willekeurige getallen vastleggen)
random.random() (Floating point getal tussen 0.0 en 1.0)
De functie random() van de random module genereert een willekeurig drijvend-kommagetal van het type float dat tussen 0.0 en 1.0 ligt.
import random
print(random.random())
# 0.4496839011176701
random.uniform() (Elk bereik van drijvende komma getallen)
uniform(a, b)
De functies van deze willekeurige module genereren willekeurige getallen van het type floating-point getal float in een van de volgende bereiken
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
De twee argumenten kunnen zowel groter als kleiner zijn; indien ze gelijk zijn, retourneert hij uiteraard alleen die waarde. De teruggegeven waarde is altijd een vlotter.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
Het argument kan ook worden opgegeven als een float.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
Of de waarde van b in het bereik wordt opgenomen, hangt af van de volgende afronding, zoals gedocumenteerd.a + (b-a) * random.random()
Of de eindpuntwaarde b binnen het bereik ligt of niet hangt af van de afronding met drijvende komma in de volgende vergelijking
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
Genereer willekeurige getallen die een normale verdeling, Gaussiaanse verdeling, enz. volgen.
De functies random() en uniform() hierboven genereren uniform verdeelde willekeurige getallen, maar er zijn ook functies om drijvende komma getallen te genereren die de volgende verdeling volgen.
- bètaverdeling:
random.betavariate()
- exponentiële verdeling:
random.expovariate()
- gamma-verdeling:
random.gammavariate()
- Gaussiaanse verdeling:
random.gauss()
- lognormale verdeling:
random.lognormvariate()
- normale distributie:
random.normalvariate()
- Von Mises verdeling:
random.vonmisesvariate()
- Pareto-verdeling:
random.paretovariate()
- Weibull-verdeling:
random.weibullvariate()
De parameters van elke distributie worden gespecificeerd door argumenten. Zie de officiële documentatie voor details.
random.randrange() (Integer van willekeurig bereik en stap)
randrange(start, stop, step)
De functie van deze willekeurige module geeft een willekeurig gekozen element terug uit de volgende elementen.range(start, stop, step)
Net als bij range() kunnen de argumenten start en step weggelaten worden. Als ze worden weggelaten, is start=0 en stap=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
Het argument stap kan worden ingesteld om een even of oneven willekeurig geheel getal te genereren, of een willekeurig geheel getal dat een veelvoud van drie is.
Bijvoorbeeld, als start even is en stap=2, kunnen alleen even gehele getallen in het bereik willekeurig worden verkregen.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint() (Een geheel getal in een willekeurig bereik)
randint(a, b)
De functie van deze willekeurige module geeft het volgende willekeurige gehele getal int.a <= n <= b
randrange(a, b + 1)
Equivalent hieraan; merk op dat de waarde van b ook in het bereik wordt opgenomen.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
Genereren van een lijst met willekeurige getallen als elementen
In dit onderdeel wordt uitgelegd hoe de random module van de standaard bibliotheek gebruikt kan worden om een lijst te genereren met willekeurige getallen als elementen.
Lijst van willekeurige getallen met drijvende-kommagetallen
Om een lijst te genereren waarvan de elementen willekeurige getallen met drijvende komma zijn, combineert u de functies random() en uniform() met de notatie list comprehension.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
In het bovenstaande voorbeeld wordt range() gebruikt, maar lijsten en tupels zijn ook mogelijk voor het gewenste aantal elementen. Voor meer details over list comprehensions, zie het volgende artikel.
- Verwante Artikelen:Python lijst notatie gebruiken
Lijst van gehele int willekeurige getallen
Bij het genereren van een lijst waarvan de elementen gehele willekeurige getallen zijn, kan het combineren van de bovenstaande randange() en randint() met de list comprehension notatie resulteren in dubbele waarden.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
Als je een willekeurige reeks gehele getallen wilt maken zonder doublures, extraheer dan de elementen van range() met een willekeurig bereik met 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]
Voor meer informatie over random.sample(), zie het volgende artikel.
- Verwante Artikelen:Willekeurige elementen uit een lijst kiezen in Python met choice(), sample(), choices()
De willekeurige getallengenerator initialiseren (het zaad van de willekeurige getallen vastleggen)
Door een willekeurig geheel getal aan de functie seed() van de random module te geven, kan het random getalzaad worden vastgesteld en kan de random getalgenerator worden geïnitialiseerd.
Na initialisatie met hetzelfde zaad wordt de willekeurige waarde altijd op dezelfde manier gegenereerd.
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