Els números aleatoris es poden generar mitjançant les funcions random(), uniform(), randange() i randint() del mòdul aleatori de la biblioteca estàndard de Python.
El mòdul aleatori s’inclou a la biblioteca estàndard, de manera que no cal cap instal·lació addicional. Per descomptat, cal importar-lo.
La informació següent es proporciona aquí.
random.random()
(Nombre de coma flotant entre 0,0 i 1,0)random.uniform()
(Qualsevol rang de nombres de coma flotant)- Genera números aleatoris que segueixen una distribució normal, una distribució gaussiana, etc.
random.randrange()
(Nombre enter d’interval i pas arbitrari)random.randint()
(Un nombre enter en qualsevol interval)- Generació d’una llista amb nombres aleatoris com a elements
- Llista de nombres aleatoris de coma flotant
- Llista de nombres enters aleatoris
- Inicialitzar el generador de números aleatoris (fixeu la llavor de números aleatoris)
Consulteu l’article següent sobre com extreure o ordenar elements d’una llista aleatòriament.
- Articles relacionats:Seleccionar elements aleatoris d’una llista a Python mitjançant choice(), sample(), choices()
- random.random()(Nombre de coma flotant entre 0,0 i 1,0)
- random.uniform()(Qualsevol rang de nombres de coma flotant)
- Genera números aleatoris que segueixen una distribució normal, una distribució gaussiana, etc.
- random.randrange()(Nombre enter d’interval i pas arbitrari)
- random.randint()(Un nombre enter en qualsevol interval)
- Generació d’una llista amb nombres aleatoris com a elements
- Inicialitzar el generador de números aleatoris (fixeu la llavor de números aleatoris)
random.random()(Nombre de coma flotant entre 0,0 i 1,0)
La funció random() del mòdul aleatori genera un nombre aleatori de coma flotant de tipus float que està entre 0,0 i 1,0.
import random
print(random.random())
# 0.4496839011176701
random.uniform()(Qualsevol rang de nombres de coma flotant)
uniform(a, b)
Les funcions d’aquest mòdul aleatori generen nombres aleatoris de tipus flotant de nombres de coma flotant en qualsevol dels intervals següents
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
Els dos arguments poden ser més grans o més petits; si són iguals, naturalment només retornaran aquest valor. El valor de retorn és sempre flotant.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
L’argument també es pot especificar com a flotant.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
Si el valor de b s’inclou a l’interval depèn de l’arrodoniment següent, tal com es documenta.a + (b-a) * random.random()
Que el valor del punt final b estigui dins l’interval o no depèn de l’arrodoniment de coma flotant a l’equació següent
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
Genera números aleatoris que segueixen una distribució normal, una distribució gaussiana, etc.
Les funcions aleatòries () i uniform () anteriors generen nombres aleatoris distribuïts uniformement, però també hi ha funcions per generar números de coma flotant que segueixen la següent distribució.
- distribució beta:
random.betavariate()
- distribució exponencial:
random.expovariate()
- distribució gamma:
random.gammavariate()
- Distribució gaussiana:
random.gauss()
- distribució lognormal:
random.lognormvariate()
- distribució normal:
random.normalvariate()
- Distribució Von Mises:
random.vonmisesvariate()
- Distribució de Pareto:
random.paretovariate()
- Distribució Weibull:
random.weibullvariate()
Els paràmetres de cada distribució s’especifiquen mitjançant arguments. Consulteu la documentació oficial per a més detalls.
random.randrange()(Nombre enter d’interval i pas arbitrari)
randrange(start, stop, step)
La funció d’aquest mòdul aleatori retorna un element seleccionat aleatòriament dels elements següents.range(start, stop, step)
Igual que amb range(), es poden ometre els arguments start i step. Si s’ometen, inici=0 i pas=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
El pas de l’argument es pot configurar per generar un nombre enter aleatori parell o senar, o un nombre enter aleatori que sigui múltiple de tres.
Per exemple, si start és parell i pas=2, només es poden obtenir aleatòriament nombres enters parells de l’interval.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint()(Un nombre enter en qualsevol interval)
randint(a, b)
La funció d’aquest mòdul aleatori retorna el següent enter aleatori int.a <= n <= b
randrange(a, b + 1)
Equivalent a això; tingueu en compte que el valor de b també s’inclou a l’interval.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
Generació d’una llista amb nombres aleatoris com a elements
En aquesta secció, explicarem com utilitzar el mòdul aleatori de la biblioteca estàndard per generar una llista amb nombres aleatoris com a elements.
Llista de nombres aleatoris amb flotants de coma flotant
Per generar una llista els elements de la qual són nombres aleatoris de coma flotant, combineu les funcions aleatòria() i uniform() amb la notació de comprensió de llista.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
A l’exemple anterior, s’utilitza range(), però també són possibles llistes i tuples per al nombre desitjat d’elements. Per obtenir més detalls sobre la comprensió de la llista, consulteu l’article següent.
- Articles relacionats:Utilitzant la notació de comprensió de llista de Python
Llista de nombres enters int aleatoris
Quan es genera una llista els elements de la qual són nombres aleatoris enters, la combinació de randange() i randint() anteriors amb la notació de comprensió de la llista pot donar lloc a valors duplicats.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
Si voleu fer una seqüència aleatòria de nombres enters sense duplicació, extreu els elements de range() amb un rang arbitrari utilitzant 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]
Per obtenir més informació sobre random.sample(), consulteu l’article següent.
- Articles relacionats:Seleccionar elements aleatoris d’una llista a Python mitjançant choice(), sample(), choices()
Inicialitzar el generador de números aleatoris (fixeu la llavor de números aleatoris)
En donar un nombre enter arbitrari a la funció seed() del mòdul aleatori, es pot arreglar la llavor de nombres aleatoris i es pot inicialitzar el generador de números aleatoris.
Després de la inicialització amb la mateixa llavor, el valor aleatori sempre es genera de la mateixa manera.
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