A Python szabványos könyvtár random moduljának random(), uniform(), randange() és randint() függvényeivel lehet véletlen számokat generálni.
A random modul a szabványos könyvtárban szerepel, így nincs szükség további telepítésre. Természetesen importálni kell.
A következő információk itt találhatók.
random.random()
(0,0 és 1,0 közötti lebegőpontos szám)random.uniform()
(Bármely lebegőpontos számtartomány)- Olyan véletlen számok generálása, amelyek normális eloszlást, Gauss-eloszlást stb. követnek.
random.randrange()
(Tetszőleges tartományú és lépésszámú egész szám)random.randint()
(Egész szám bármely tartományban)- Egy lista generálása véletlen számokkal mint elemekkel
- Véletlenszerű lebegőpontos számok listája
- Egész számok véletlenszerű számainak listája
- A véletlenszám-generátor inicializálása (a véletlenszám-vetőmag rögzítése)
A lista elemeinek véletlenszerű kivonásáról vagy rendezéséről lásd a következő cikket.
- Kapcsolódó cikkek:Véletlen elemek kiválasztása egy listából Pythonban a choice(), sample(), choices() segítségével
- random.random() (0,0 és 1,0 közötti lebegőpontos szám)
- random.uniform() (Bármely lebegőpontos számtartomány)
- Olyan véletlen számok generálása, amelyek normális eloszlást, Gauss-eloszlást stb. követnek.
- random.randrange() (Tetszőleges tartományú és lépésszámú egész szám)
- random.randint() (Egész szám bármely tartományban)
- Egy lista generálása véletlen számokkal mint elemekkel
- A véletlenszám-generátor inicializálása (a véletlenszám-vetőmag rögzítése)
random.random() (0,0 és 1,0 közötti lebegőpontos szám)
A random modul random() függvénye egy véletlenszerű float típusú lebegőpontos számot generál, amely 0.0 és 1.0 között van.
import random
print(random.random())
# 0.4496839011176701
random.uniform() (Bármely lebegőpontos számtartomány)
uniform(a, b)
Ennek a véletlen modulnak a függvényei a következő tartományok bármelyikében lebegőpontos float típusú véletlen számokat generálnak
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
A két argumentum lehet nagyobb vagy kisebb; ha egyenlőek, akkor természetesen csak ezt az értéket adja vissza. A visszatérési érték mindig egy float.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
Az argumentum floatként is megadható.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
Az, hogy a b értéke szerepel-e a tartományban, a következő kerekítéstől függ, amint az dokumentálva van.a + (b-a) * random.random()
Az, hogy a b végpont értéke a tartományon belül van-e vagy sem, a lebegőpontos kerekítéstől függ a következő egyenlet szerint
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
Olyan véletlen számok generálása, amelyek normális eloszlást, Gauss-eloszlást stb. követnek.
A fenti random() és uniform() függvények egyenletes eloszlású véletlen számokat generálnak, de vannak olyan függvények is, amelyek a következő eloszlást követő lebegőpontos számokat generálnak.
- béta-eloszlás:
random.betavariate()
- exponenciális eloszlás:
random.expovariate()
- gammaeloszlás:
random.gammavariate()
- Gauss-eloszlás:
random.gauss()
- lognormális eloszlás:
random.lognormvariate()
- normális eloszlás:
random.normalvariate()
- Von Mises eloszlás:
random.vonmisesvariate()
- Pareto-eloszlás:
random.paretovariate()
- Weibull eloszlás:
random.weibullvariate()
Az egyes eloszlások paraméterei argumentumokkal adhatók meg. A részletekért lásd a hivatalos dokumentációt.
random.randrange() (Tetszőleges tartományú és lépésszámú egész szám)
randrange(start, stop, step)
Ennek a random modulnak a funkciója egy véletlenszerűen kiválasztott elemet ad vissza a következő elemek közül.range(start, stop, step)
A range()-hoz hasonlóan a start és step argumentumok elhagyhatók. Ha elhagyjuk őket, start=0 és step=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
A step argumentummal beállítható, hogy páros vagy páratlan véletlen egész számot generáljon, vagy olyan véletlen egész számot, amely háromszorosa a háromnak.
Ha például a start páros és a step=2, akkor a tartományban csak páros egész számokat kaphatunk véletlenszerűen.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint() (Egész szám bármely tartományban)
randint(a, b)
Ennek a véletlen modulnak a függvénye a következő véletlen egész számot adja vissza.a <= n <= b
randrange(a, b + 1)
Ezzel egyenértékű; vegye figyelembe, hogy a b értéke is szerepel a tartományban.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
Egy lista generálása véletlen számokkal mint elemekkel
Ebben a szakaszban elmagyarázzuk, hogyan használhatjuk a szabványos könyvtár random modulját egy olyan lista létrehozására, amelynek elemei véletlen számok.
Véletlen számok listája lebegőpontos lebegőszámokkal
Ha olyan listát szeretne létrehozni, amelynek elemei lebegőpontos véletlen számok, kombinálja a random() és uniform() függvényeket a lista megértésének jelölésével.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
A fenti példában a range() funkciót használjuk, de a kívánt elemszámhoz listák és tuple-ok is lehetségesek. A listák megértéséről bővebben a következő cikkben olvashat.
- Kapcsolódó cikkek:A Python listamegértés jelölés használata
Egész int véletlen számok listája
Ha olyan listát generálunk, amelynek elemei egész véletlen számok, a fenti randange() és randint() kombinálása a lista megértésének jelölésével duplikált értékeket eredményezhet.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
Ha egész számok véletlenszerű, duplikáció nélküli sorozatát szeretné létrehozni, akkor a range() elemeit egy tetszőleges tartományban vegye ki a random.sample() segítségével.
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]
A random.sample() funkcióval kapcsolatos további információkért olvassa el a következő cikket.
- Kapcsolódó cikkek:Véletlen elemek kiválasztása egy listából Pythonban a choice(), sample(), choices() segítségével
A véletlenszám-generátor inicializálása (a véletlenszám-vetőmag rögzítése)
A random modul seed() függvényének egy tetszőleges egész szám megadásával rögzíthető a véletlenszám-vetőmag és inicializálható a véletlenszám-generátor.
Az azonos maggal történő inicializálás után a véletlen érték mindig ugyanúgy generálódik.
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