Slučajni brojevi mogu se generirati korištenjem funkcija random(), uniform(), randange() i randint() u random modulu standardne biblioteke Python.
Nasumični modul je uključen u standardnu biblioteku, tako da nije potrebna dodatna instalacija. Naravno, morate ga uvesti.
Ovdje su navedene sljedeće informacije.
random.random()
(Broj s pomičnim zarezom između 0,0 i 1,0)random.uniform()
(Bilo koji raspon brojeva s pomičnim zarezom)- Generirajte nasumične brojeve koji slijede normalnu distribuciju, Gaussovu distribuciju itd.
random.randrange()
(Cijeli broj proizvoljnog raspona i koraka)random.randint()
(Cijeli broj u bilo kojem rasponu)- Generiranje popisa sa slučajnim brojevima kao elementima
- Popis nasumičnih brojeva s pomičnim zarezom
- Popis cjelobrojnih slučajnih brojeva
- Inicijalizirajte generator slučajnih brojeva (popravite sjeme slučajnog broja)
Pogledajte sljedeći članak o tome kako nasumično izdvojiti ili sortirati elemente popisa.
- random.random()(Broj s pomičnim zarezom između 0,0 i 1,0)
- random.uniform()(Bilo koji raspon brojeva s pomičnim zarezom)
- Generirajte nasumične brojeve koji slijede normalnu distribuciju, Gaussovu distribuciju itd.
- random.randrange()(Cijeli broj proizvoljnog raspona i koraka)
- random.randint()(Cijeli broj u bilo kojem rasponu)
- Generiranje popisa sa slučajnim brojevima kao elementima
- Inicijalizirajte generator slučajnih brojeva (popravite sjeme slučajnog broja)
random.random()(Broj s pomičnim zarezom između 0,0 i 1,0)
Funkcija random modula random() generira slučajni broj s pomičnim zarezom tipa float koji je između 0,0 i 1,0.
import random
print(random.random())
# 0.4496839011176701
random.uniform()(Bilo koji raspon brojeva s pomičnim zarezom)
uniform(a, b)
Funkcije ovog slučajnog modula generiraju nasumične brojeve tipa float s pomičnim zarezom u bilo kojem od sljedećih raspona
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
Dva argumenta mogu biti ili veći ili manji; ako su jednaki, prirodno će vratiti samo tu vrijednost. Povratna vrijednost je uvijek float.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
Argument se također može odrediti kao float.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
Hoće li vrijednost b biti uključena u raspon ovisi o sljedećem zaokruživanju, kao što je dokumentirano.a + (b-a) * random.random()
Je li vrijednost krajnje točke b u rasponu ili ne ovisi o zaokruživanju s pomičnim zarezom u sljedećoj jednadžbi
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
Generirajte nasumične brojeve koji slijede normalnu distribuciju, Gaussovu distribuciju itd.
Gore navedene funkcije random() i uniform() generiraju jednoliko raspoređene slučajne brojeve, ali postoje i funkcije za generiranje brojeva s pomičnim zarezom koje slijede sljedeću distribuciju.
- beta distribucija:
random.betavariate()
- eksponencijalna distribucija:
random.expovariate()
- gama distribucija:
random.gammavariate()
- Gaussova raspodjela:
random.gauss()
- lognormalna raspodjela:
random.lognormvariate()
- normalna distribucija:
random.normalvariate()
- Von Misesova distribucija:
random.vonmisesvariate()
- Pareto distribucija:
random.paretovariate()
- Weibullova distribucija:
random.weibullvariate()
Parametri svake distribucije su specificirani argumentima. Za detalje pogledajte službenu dokumentaciju.
random.randrange()(Cijeli broj proizvoljnog raspona i koraka)
randrange(start, stop, step)
Funkcija ovog slučajnog modula vraća nasumično odabrani element iz sljedećih elemenata.range(start, stop, step)
Kao i kod range(), argumenti start i step mogu se izostaviti. Ako su izostavljeni, start=0 i step=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
Korak argumenta može se postaviti tako da generira paran ili neparan nasumični cijeli broj, ili slučajni cijeli broj koji je višekratnik tri.
Na primjer, ako je početak paran i korak=2, samo parni cijeli brojevi u rasponu mogu se dobiti nasumično.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint()(Cijeli broj u bilo kojem rasponu)
randint(a, b)
Funkcija ovog slučajnog modula vraća sljedeći nasumični cijeli broj.a <= n <= b
randrange(a, b + 1)
Ekvivalentno ovome; imajte na umu da je vrijednost b također uključena u raspon.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
Generiranje popisa sa slučajnim brojevima kao elementima
U ovom ćemo odjeljku objasniti kako koristiti nasumični modul standardne biblioteke za generiranje popisa sa slučajnim brojevima kao elementima.
Popis slučajnih brojeva s plutajućim zarezom
Da biste generirali popis čiji su elementi slučajni brojevi s pomičnim zarezom, kombinirajte funkcije random() i uniform() s notacijom za razumijevanje popisa.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
U gornjem primjeru koristi se range(), ali su moguće liste i torke za željeni broj elemenata. Za više pojedinosti o razumijevanju popisa, pogledajte sljedeći članak.
- Povezani članci:Korištenje zapisa razumijevanja popisa Python
Popis integer int slučajnih brojeva
Prilikom generiranja popisa čiji su elementi cjelobrojni slučajni brojevi, kombiniranje gornjeg randange() i randint() s notacijom razumijevanja popisa može rezultirati duplim vrijednostima.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
Ako želite napraviti nasumični slijed cijelih brojeva bez dupliciranja, izdvojite elemente range() s proizvoljnim rasponom pomoću 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]
Za više informacija o random.sample(), pogledajte sljedeći članak.
Inicijalizirajte generator slučajnih brojeva (popravite sjeme slučajnog broja)
Davanjem proizvoljnog cijelog broja funkciji seed(), seed nasumičnih brojeva može se fiksirati i generator slučajnih brojeva se može inicijalizirati.
Nakon inicijalizacije s istim sjemenom, slučajna vrijednost se uvijek generira na isti način.
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