Ahogy korábban már írtam, a véletlen számok használatához importálni kell a random modult.
import random Utána a random modul utasításait tudjuk használni. A random a rendszeridőt használja a véletlen szám létrehozására. Néhány gyakrabban használt modulra fogok csak kitérni.
random.random() Ez 0 és 1 közötti valós véletlen számokat fog generálni, az 1 nincs benne! Ismerős lehet más programozási nyelvekből. Nyilván ha megszoroznám 10-zel, és venném az egész részét akkor 1-10-ig sorsolna ez is.
print(random.random())
random.randrange() Ennek 3 paramétere lehet: mettől, meddig, lépésköz.
Ha azt írjuk, hogy random.randrange(1,10,1) az azt jelenti, hogy a kisorsolt számok lehetnek: 1,2,3,4,5,6,7,8,9 Ebben az esetben az utolsó paraméter simán elhagyható, mivel 1 az alapértelmezett.
Ha csak 1db paramétert adok, akkor 0 és a megadott szám-1 közötti számokat sorsol ki.
print(random.randrange(1, 10, 1)) # kimenet lehet: 1,2,3,4,5,6,7,8,9 # röviden print(random.randrange(1, 10)) # egy db paraméterrel print(random.randrange(10)) #kimenet lehet: 0,1,2,3,4,5,6,7,8,9 # sorsoljunk 1-10 közötti páratlan számokat! print(random.randrange(1,10,2)) #kimenet lehet: 1,3,5,7,9
Ugyanúgy, ahogy a for ciklusnál is néztük, nem csak 1 lehet a lépésköz. Ha csak 1-10 közötti páratlan számokat akarok sorsolni akkor: random.randrange(1, 10, 2) kimenete: 1, 3, 5, 7, 9
random.randint() A randint abban különbözik a randrange-től, hogy a felső határ számokat is beleveszi a sorsolásba. A print(random.randint(1,10)) 1-10-ig sorsol véletlen számokat. Röviden fogalmazhatunk úgy is, hogy randrange(start, stop+1)
# dobókocka... nyilván 1-6ig sorsol print(random.randint(1,6))
A Python random.randint() és random.randrange() függvényei hasonló célt szolgálnak (véletlen egész számot generálnak egy adott tartományból), de a tartomány megadásának módjában és a felső határhoz való viszonyukban különböznek.
A randint(a, b) generál egy véletlen egész számot, amely tartalmazza mindkét végpontot.
A randrange() szintaxisa megegyezik a Python beépített range() függvényével. Ez generál egy véletlen egész számot a megadott tartományból, de a felső határt nem tartalmazza!
1-10 közötti véletlen számok: random.randint(1, 10) vagy random.randrange(1, 11)
random.uniform(a, b): Valós számot ad vissza az a és b közötti tartományból.
Példa: random.uniform(1.5, 3.5)
random.gauss(mu, sigma):Normális eloszlású szám generálása.
Hasznos statisztikai szimulációkhoz.
shuffle() A random.shuffle() utasítással egy lista elemeit tudjuk összekeverni. A listát felülírja az új sorrenddel. Nézzük a már korábban is használt hetköznapos listánkat.
import random
napok = [„hétfő”, „kedd”, „szerda”,”csütörtök”,”péntek”]
random.shuffle(napok)
print(napok)
choice() A random.choice() utasítással egy véletlen elemet tudunk kiválasztani pl. egy listából.
import random napok = ["hétfő", "kedd", "szerda","csütörtök","péntek"] print(random.choice(napok))
choices() A random.choices utasítással több elemet lehet kiválasztani pl. egy listából. A kiválasztott elemek száma lehet több, mint a lista elemeinek száma. Tehát simán ki tudunk sorsolni 10-et is az 5 elemű listából. Hogy ne legyen ennyire egyszerű, még súlyozni is lehet az egyes elemeket. Tehát ha azt akarom, hogy nagyobb eséllyel sorsoljon pénteki napot, annak nagyobb „súlyt” adok meg.
|
1 2 3 4 5 6 |
import random napok = ["hétfő", "kedd", "szerda","csütörtök","péntek"] print(random.choices(napok, k = 10)) #nézzük a súlyozást! A többi nap legyen mondjuk egyforma, de kaphat eltérő értéket is... Ebben a példában egyformák, a péntek a legfontosabb: print(random.choices(napok, weights = [1, 1, 1, 1, 10], k = 10)) |
sample() A random.sample() utasítással x elemszámú listát tudunk kiválasztani pl. egy listából. Ebben a példában 2 napot választunk ki az ötből. A k értéke 1 és a lista maximum elemszáma közötti lehet.
import random napok = ["hétfő", "kedd", "szerda","csütörtök","péntek"] random.shuffle(napok) print(random.sample(napok, k=2))
seed() A random.seed() utasítással megadhatunk egy konkrét értéket a random-nak, ami a programunk tesztelésénél lehet hasnos, mert így mindig ugyanazt az értéket kapjuk.
random.seed(4) print(random.random()) print(random.random()) print(random.random())
Példák
Lottósorsolás (5 szám 1–90 között, ismétlés nélkül)
Jelszógenerálás: A string modul segítségével betűket, számokat és írásjeleket is használunk.
A random.choices() ismétléssel választ karaktereket.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import random # sorsoljunk 5 db 1-90 közötti számot! # A random.sample() biztosítja, hogy ismétlés nélkül válasszon számokat. def lottosorsolas(): nyeroszamok = random.sample(range(1, 91), 5) print("A kisorsolt lottószámok:", sorted(nyeroszamok)) lottosorsolas() # Jelszó generálás import string def jelszogenerator(hossz=12): karakterek = string.ascii_letters + string.digits + string.punctuation jelszo = ''.join(random.choices(karakterek, k=hossz)) print("Generált jelszó:", jelszo) jelszogenerator() |
Frissítve: 2025.11.09.
