Bevezetés a Random Modulba

Mi az a Random modul?

A random a Python standard könyvtárának egyik modulja, amellyel pszeudovéletlen számokat generálhatunk és véletlenszerű választásokat végezhetünk. Hasznos például játékokban, szimulációkban vagy adatok véletlenszerű mintavételezésében.

Véletlenszám generálás

Különböző típusú véletlen számok előállítása

Véletlenszerű választás

Elemek véletlenszerű kiválasztása listákból

Lista keverés

Listák elemeinek véletlenszerű átrendezése

A Random modul importálása

A random modul használatához először importálnunk kell azt a Python programunkba:

# A random modul importálása
import random

# Most már használhatjuk a random modul függvényeit
veletlenszam = random.random()  # 0.0 <= veletlenszam < 1.0
print(veletlenszam)
Fontos: a random pszeudovéletlen értékeket ad. Játékokhoz és gyakorláshoz megfelelő, de jelszavakhoz, tokenekhez vagy más biztonsági célhoz a secrets modul való.

Próbáld ki!

A véletlenszámok tulajdonságai

Nézzük meg, milyen tulajdonságai vannak a generált véletlenszámoknak:

# Generáljunk 10 véletlenszámot és vizsgáljuk meg őket
import random

# Lista a számok tárolásához
szamok = []

# 10 véletlenszám generálása
for _ in range(10):
    szam = random.random()
    szamok.append(szam)
    print(f"Generált szám: {szam:.4f}")

# Statisztikák kiszámítása
atlag = sum(szamok) / len(szamok)
minimum = min(szamok)
maximum = max(szamok)

print(f"\nStatisztikák:")
print(f"Átlag: {atlag:.4f}")
print(f"Minimum: {minimum:.4f}")
print(f"Maximum: {maximum:.4f}")

Generált számok eloszlása

Alap Függvények

random() - Lebegőpontos véletlenszám

A random() függvény a 0.0 <= x < 1.0 tartományból ad vissza lebegőpontos pszeudovéletlen számot: a 0.0 lehetséges, az 1.0 már nem.

# Véletlenszámok generálása a 0.0 <= x < 1.0 tartományból
import random

# Alap véletlenszám
szam = random.random()
print(f"Véletlenszám: {szam}")

# Példa: Véletlenszám skálázása más tartományra (pl. 1-10 között)
skalazott = 1 + (random.random() * 9)  # 1.0 <= skalazott < 10.0
print(f"Skálázott véletlenszám: {skalazott}")

Próbáld ki!

randint() - Egész véletlenszám

A randint(a, b) függvény két szám közötti véletlenszerű egész számot generál, ahol mindkét határérték beletartozik a lehetséges értékek közé.

# Egész szám generálása megadott határok között
import random

# Dobókocka szimulálása (1-6 közötti szám)
dobas = random.randint(1, 6)
print(f"A dobókocka eredménye: {dobas}")

# Nagyobb tartomány (pl. 1-100)
szam = random.randint(1, 100)
print(f"Véletlenszám 1 és 100 között: {szam}")

Dobókocka szimuláció

1

choice() - Véletlenszerű elem kiválasztása

A choice() függvény egy véletlenszerű elemet választ ki egy listából vagy más sorozatból.

# Véletlenszerű elem kiválasztása listából
import random

szinek = ['piros', 'kék', 'zöld', 'sárga', 'fehér']
valasztott_szin = random.choice(szinek)
print(f"Véletlenszerűen választott szín: {valasztott_szin}")

gyumolcsok = ['alma', 'körte', 'banán', 'narancs']
valasztott_gyumolcs = random.choice(gyumolcsok)
print(f"Véletlenszerűen választott gyümölcs: {valasztott_gyumolcs}")

Lista elem választó

Gyakorlati Példák

Kő-Papír-Olló Játék

Egy egyszerű kő-papír-olló játék megvalósítása a random modul használatával:

# Kő-Papír-Olló játék
import random

lehetosegek = ["kő", "papír", "olló"]
felhasznalo = input("Mit választasz? Kő, papír vagy olló? ").strip().lower()

if felhasznalo not in lehetosegek:
    print("Hibás adatot adtál meg!")
else:
    gep = random.choice(lehetosegek)

    if gep == felhasznalo:
        print(f"A gép választása: {gep}. Döntetlen!")
    elif (felhasznalo == "kő" and gep == "olló") or \
         (felhasznalo == "papír" and gep == "kő") or \
         (felhasznalo == "olló" and gep == "papír"):
        print(f"A gép választása: {gep}. Nyertél!")
    else:
        print(f"A gép választása: {gep}. Vesztettél!")

Játssz a számítógép ellen!

Kincskereső Játék

Találd meg a kincset egy 5x5-ös területen! A program jelzi, hogy merre kell továbbmenni:

# Kincskereső játék
import random

# Véletlenszerű kincs helye (X, Y)
kincs_x = random.randint(1, 5)
kincs_y = random.randint(1, 5)

print("Találd meg a kincset egy 5x5-ös rácson!")

tipp_x = -1
tipp_y = -1
probalkozasok = 0

# Addig próbálkozik, amíg meg nem találja a kincset
while tipp_x != kincs_x or tipp_y != kincs_y:
   tipp_x = int(input("Add meg az X koordinátát (1-5): "))
   tipp_y = int(input("Add meg az Y koordinátát (1-5): "))
   probalkozasok += 1

   if tipp_x < kincs_x:
       print("A kincs jobbra van.")
   elif tipp_x > kincs_x:
       print("A kincs balra van.")

   if tipp_y < kincs_y:
       print("A kincs feljebb van.")
   elif tipp_y > kincs_y:
       print("A kincs lejjebb van.")

print(f"Gratulálok! Megtaláltad a kincset {probalkozasok} próbálkozás után!")

Keresd meg a kincset!

Próbálkozások száma: 0