2026. május 8., péntek

Szimulált sorsolások

 Lássunk erre néhány egyszerű példát.
-----------------------
Sorsolások ismétlése ciklussal

import random 
for i in range(10): 
    szamok = sorted(random.sample(range(1, 36), 7)) 
    print(f'{i+1}. sorsolás: {szamok}') 

-----------------------------------
Sorsolás eredményének kiértékelése

import random
# $ cd /tmp && cat > lotto.py << 'EOF' import random...
# 7 szám bekérése a felhasználótól
print("Adj meg 7 különböző számot 1 és 35 között!")
tippek = [1,2,3,4,5,6,7]
while len(tippek) < 7:
    try:
        szam = int(input(f"{len(tippek)+1}. szám: "))
        if szam < 1 or szam > 35:
            print("  Hiba: a szám 1 és 35 között legyen!")
        elif szam in tippek:
            print("  Hiba: ezt a számot már megadtad!")
        else:
            tippek.append(szam)
    except ValueError:
        print("  Hiba: csak egész számot adhatsz meg!")

tippek_set = set(tippek)
print(f"\nA tippjeid: {sorted(tippek)}\n")
print("=" * 50)

# Statisztika a találatokhoz
talalat_statisztika = {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0}
osszes_talalat = 0
legjobb_sorsolas = 0
legjobb_talalat = 0

# 10 sorsolás
for i in range(10):
    szamok = sorted(random.sample(range(1, 36), 7))
    talalatok = tippek_set & set(szamok)
    talalat_szam = len(talalatok)

    talalat_statisztika[talalat_szam] += 1
    osszes_talalat += talalat_szam

    if talalat_szam > legjobb_talalat:
        legjobb_talalat = talalat_szam
        legjobb_sorsolas = i + 1

    print(f"{i+1:2d}. sorsolás: {szamok} | Találatok: {talalat_szam} db {sorted(talalatok) if talalatok else ''}")

# Eredmény összegzése
print("=" * 50)
print("\n VÉGEREDMÉNY ".center(50, "="))
print(f"Tippjeid:           {sorted(tippek)}")
print(f"Összes találat:     {osszes_talalat} db (10 sorsolás alatt)")
print(f"Átlagos találat:    {osszes_talalat / 10:.2f} szám/sorsolás")
print(f"Legjobb sorsolás:   {legjobb_sorsolas}. ({legjobb_talalat} találat)")
print("\nTalálatok eloszlása:")
for talalat, db in talalat_statisztika.items():
    if db > 0:
        print(f"  {talalat} találat: {db} sorsolás {'★' * db}")
--------------------
Kivételkezelés

import random
def lotto(p, t=7, m=1, ma=35):
    a = [num for num in range(m, ma + 1) if num not in p]
    if len(a) < t:
        raise ValueError
    se = random.sample(a, t)
    se.sort()
    return se
pr = [ ]
szam = lotto(pr)
print(szam)
for i in range(10):
    szamok = lotto()
    print(f"{i+1}. sorsolás: {szamok}")
---------------
Kizárjuk az előző 2 húzás számait

import random

def szamok_bekerese(darab, min_ert, max_ert, mit, kizart_halmaz=None):
    """Bekér 'darab' különböző számot a megadott tartományban.
    A kizart_halmaz-ban szereplő számokat nem fogadja el (ütközés-vizsgálat)."""
    if kizart_halmaz is None:
        kizart_halmaz = set()
    eredmeny = []
    while len(eredmeny) < darab:
        try:
            szam = int(input(f"  {len(eredmeny)+1}. {mit}: "))
            if szam < min_ert or szam > max_ert:
                print(f"     Hiba: {min_ert} és {max_ert} között legyen!")
            elif szam in eredmeny:
                print("     Hiba: ezt a számot már megadtad!")
            elif szam in kizart_halmaz:
                print("     Hiba: ez a szám szerepel a tippjeid között, nem zárhatod ki!")
            else:
                eredmeny.append(szam)
        except ValueError:
            print("     Hiba: csak egész számot adhatsz meg!")
    return eredmeny


# 1) 7 tipp bekérése
print("=" * 60)
print("Adj meg 7 TIPPET (1-35 között):")
tippek = szamok_bekerese(7, 1, 35, "tipp")
tippek_set = set(tippek)

# 2) 8 kizárt szám bekérése (ezek nem lehetnek a tippek között)
print("\nAdj meg 8 KIZÁRT számot (1-35 között, a tippjeid nem lehetnek köztük):")
kizart = szamok_bekerese(8, 1, 35, "kizárt szám", kizart_halmaz=tippek_set)
kizart_set = set(kizart)

# 3) Sorsolható számkészlet
sorsolhato = [n for n in range(1, 36) if n not in kizart_set]

print("\n" + "=" * 60)
print(f"Tippjeid:           {sorted(tippek)}")
print(f"Kizárt számok:      {sorted(kizart)}  (nem kerülnek kihúzásra)")
print(f"Sorsolható számok:  {sorsolhato}")
print(f"({len(sorsolhato)} szám közül húzunk 7-et)")
print("=" * 60)

# 4) 10 sorsolás + összehasonlítás
talalat_statisztika = {i: 0 for i in range(8)}
osszes_talalat = 0
legjobb_sorsolas = 0
legjobb_talalat = 0

for i in range(10):
    szamok = sorted(random.sample(sorsolhato, 7))
    talalatok = tippek_set & set(szamok)
    talalat_szam = len(talalatok)

    talalat_statisztika[talalat_szam] += 1
    osszes_talalat += talalat_szam

    if talalat_szam > legjobb_talalat:
        legjobb_talalat = talalat_szam
        legjobb_sorsolas = i + 1

    talalt_str = f" -> {sorted(talalatok)}" if talalatok else ""
    print(f"{i+1:2d}. sorsolás: {szamok} | Találat: {talalat_szam} db{talalt_str}")

# 5) Végeredmény
print("=" * 60)
print(" VÉGEREDMÉNY ".center(60, "="))
print(f"Tippjeid:           {sorted(tippek)}")
print(f"Kizárt számok:      {sorted(kizart)}")
print(f"Összes találat:     {osszes_talalat} db (10 sorsolás alatt)")
print(f"Átlagos találat:    {osszes_talalat / 10:.2f} szám/sorsolás")
print(f"Legjobb sorsolás:   {legjobb_sorsolas}. ({legjobb_talalat} találat)")
print("\nTalálatok eloszlása:")
for talalat, db in sorted(talalat_statisztika.items()):
    if db > 0:
        print(f"  {talalat} találat: {db} sorsolás {'*' * db}")
--------------------------------
80 sorsolás kell ahhoz hogy 5 találat legyen

------------------
Meg is adhatjuk az értékeket a programban

python
import random

# ============================================================
#  ITT ÁLLÍTSD BE A SAJÁT SZÁMAIDAT
# ============================================================
TIPPEK  = [5, 12, 18, 23, 27, 31, 34]          # 7 tipped (1-35)
KIZART  = [1, 2, 3, 4, 6, 7, 8, 9]              # 8 kizárt szám (1-35)
SORSOLASOK_SZAMA = 10
# ============================================================

# Egyszerű ellenőrzés
assert len(TIPPEK) == 7,  "7 tippet kell megadni!"
assert len(KIZART) == 8,  "8 kizárt számot kell megadni!"
assert all(1 <= n <= 35 for n in TIPPEK + KIZART), "Minden szám 1-35 között legyen!"
assert len(set(TIPPEK)) == 7,  "A tippek nem ismétlődhetnek!"
assert len(set(KIZART)) == 8,  "A kizárt számok nem ismétlődhetnek!"
assert not (set(TIPPEK) & set(KIZART)), "A tippek és a kizárt számok nem fedhetik egymást!"

tippek_set = set(TIPPEK)
kizart_set = set(KIZART)
sorsolhato = [n for n in range(1, 36) if n not in kizart_set]

print("=" * 60)
print(f"Tippjeid:           {sorted(TIPPEK)}")
print(f"Kizárt számok:      {sorted(KIZART)}  (nem kerülnek kihúzásra)")
print(f"Sorsolható számok:  {sorsolhato}")
print(f"({len(sorsolhato)} szám közül húzunk 7-et, {SORSOLASOK_SZAMA} alkalommal)")
print("=" * 60)

talalat_statisztika = {i: 0 for i in range(8)}
osszes_talalat = 0
legjobb_sorsolas = 0
legjobb_talalat = 0

for i in range(SORSOLASOK_SZAMA):
    szamok = sorted(random.sample(sorsolhato, 7))
    talalatok = tippek_set & set(szamok)
    talalat_szam = len(talalatok)

    talalat_statisztika[talalat_szam] += 1
    osszes_talalat += talalat_szam

    if talalat_szam > legjobb_talalat:
        legjobb_talalat = talalat_szam
        legjobb_sorsolas = i + 1

    talalt_str = f" -> {sorted(talalatok)}" if talalatok else ""
    print(f"{i+1:2d}. sorsolás: {szamok} | Találat: {talalat_szam} db{talalt_str}")

print("=" * 60)
print(" VÉGEREDMÉNY ".center(60, "="))
print(f"Tippjeid:           {sorted(TIPPEK)}")
print(f"Kizárt számok:      {sorted(KIZART)}")
print(f"Összes találat:     {osszes_talalat} db ({SORSOLASOK_SZAMA} sorsolás alatt)")
print(f"Átlagos találat:    {osszes_talalat / SORSOLASOK_SZAMA:.2f} szám/sorsolás")
print(f"Legjobb sorsolás:   {legjobb_sorsolas}. ({legjobb_talalat} találat)")
print("\nTalálatok eloszlása:")
for talalat, db in sorted(talalat_statisztika.items()):
    if db > 0:
        print(f"  {talalat} találat: {db} sorsolás {'*' * db}")

---------------------------------------



import random

# ============================================================
#  ITT ÁLLÍTSD BE A SAJÁT SZÁMAIDAT
# ============================================================
TIPPEK  = [5, 12, 18, 23, 27, 31, 34]          # 7 tipped (1-35)
KIZART  = [1,2,4,8,9,11,13,15,17,22,25,26,21,28,29,30,32,35]              # 18 kizárt szám (1-35)
SORSOLASOK_SZAMA = 100
# ============================================================

# Egyszerű ellenőrzés
assert len(TIPPEK) == 7,  "7 tippet kell megadni!"
assert len(KIZART) == 18,  "8 kizárt számot kell megadni!"
assert all(1 <= n <= 35 for n in TIPPEK + KIZART), "Minden szám 1-35 között legyen!"
assert len(set(TIPPEK)) == 7,  "A tippek nem ismétlődhetnek!"
assert len(set(KIZART)) == 18,  "A kizárt számok nem ismétlődhetnek!"
assert not (set(TIPPEK) & set(KIZART)), "A tippek és a kizárt számok nem fedhetik egymást!"

tippek_set = set(TIPPEK)
kizart_set = set(KIZART)
sorsolhato = [n for n in range(1, 36) if n not in kizart_set]

print("=" * 60)
print(f"Tippjeid:           {sorted(TIPPEK)}")
print(f"Kizárt számok:      {sorted(KIZART)}  (nem kerülnek kihúzásra)")
print(f"Sorsolható számok:  {sorsolhato}")
print(f"({len(sorsolhato)} szám közül húzunk 7-et, {SORSOLASOK_SZAMA} alkalommal)")
print("=" * 60)

talalat_statisztika = {i: 0 for i in range(8)}
osszes_talalat = 0
legjobb_sorsolas = 0
legjobb_talalat = 0

for i in range(SORSOLASOK_SZAMA):
    szamok = sorted(random.sample(sorsolhato, 7))
    talalatok = tippek_set & set(szamok)
    talalat_szam = len(talalatok)

    talalat_statisztika[talalat_szam] += 1
    osszes_talalat += talalat_szam

    if talalat_szam > legjobb_talalat:
        legjobb_talalat = talalat_szam
        legjobb_sorsolas = i + 1

    talalt_str = f" -> {sorted(talalatok)}" if talalatok else ""
    print(f"{i+1:2d}. sorsolás: {szamok} | Találat: {talalat_szam} db{talalt_str}")

print("=" * 60)
print(" VÉGEREDMÉNY ".center(60, "="))
print(f"Tippjeid:           {sorted(TIPPEK)}")
print(f"Kizárt számok:      {sorted(KIZART)}")
print(f"Összes találat:     {osszes_talalat} db ({SORSOLASOK_SZAMA} sorsolás alatt)")
print(f"Átlagos találat:    {osszes_talalat / SORSOLASOK_SZAMA:.2f} szám/sorsolás")
print(f"Legjobb sorsolás:   {legjobb_sorsolas}. ({legjobb_talalat} találat)")
print("\nTalálatok eloszlása:")
for talalat, db in sorted(talalat_statisztika.items()):
    if db > 0:
        print(f"  {talalat} találat: {db} sorsolás {'*' * db}")

-----------------------------

import random

# ============================================================
#  ITT ÁLLÍTSD BE A SAJÁT SZÁMAIDAT
# ============================================================
TIPPEK  = [5, 12, 18, 23, 27, 31, 34]          # 7 tipped (1-35)
KIZART  = [1,2,3,4,6,7,8,9,10,11,13,15,16,17,22,25,26,21,28,29,30,32,33,35]              # 18 kizárt szám (1-35)
SORSOLASOK_SZAMA = 100
# ============================================================

# Egyszerű ellenőrzés
assert len(TIPPEK) == 7,  "7 tippet kell megadni!"
assert len(KIZART) == 24,  "24 kizárt számot kell megadni!"
assert all(1 <= n <= 35 for n in TIPPEK + KIZART), "Minden szám 1-35 között legyen!"
assert len(set(TIPPEK)) == 7,  "A tippek nem ismétlődhetnek!"
assert len(set(KIZART)) == 24,  "A kizárt számok nem ismétlődhetnek!"
assert not (set(TIPPEK) & set(KIZART)), "A tippek és a kizárt számok nem fedhetik egymást!"

tippek_set = set(TIPPEK)
kizart_set = set(KIZART)
sorsolhato = [n for n in range(1, 36) if n not in kizart_set]

print("=" * 60)
print(f"Tippjeid:           {sorted(TIPPEK)}")
print(f"Kizárt számok:      {sorted(KIZART)}  (nem kerülnek kihúzásra)")
print(f"Sorsolható számok:  {sorsolhato}")
print(f"({len(sorsolhato)} szám közül húzunk 7-et, {SORSOLASOK_SZAMA} alkalommal)")
print("=" * 60)

talalat_statisztika = {i: 0 for i in range(8)}
osszes_talalat = 0
legjobb_sorsolas = 0
legjobb_talalat = 0

for i in range(SORSOLASOK_SZAMA):
    szamok = sorted(random.sample(sorsolhato, 7))
    talalatok = tippek_set & set(szamok)
    talalat_szam = len(talalatok)

    talalat_statisztika[talalat_szam] += 1
    osszes_talalat += talalat_szam

    if talalat_szam > legjobb_talalat:
        legjobb_talalat = talalat_szam
        legjobb_sorsolas = i + 1

    talalt_str = f" -> {sorted(talalatok)}" if talalatok else ""
    print(f"{i+1:2d}. sorsolás: {szamok} | Találat: {talalat_szam} db{talalt_str}")

print("=" * 60)
print(" VÉGEREDMÉNY ".center(60, "="))
print(f"Tippjeid:           {sorted(TIPPEK)}")
print(f"Kizárt számok:      {sorted(KIZART)}")
print(f"Összes találat:     {osszes_talalat} db ({SORSOLASOK_SZAMA} sorsolás alatt)")
print(f"Átlagos találat:    {osszes_talalat / SORSOLASOK_SZAMA:.2f} szám/sorsolás")
print(f"Legjobb sorsolás:   {legjobb_sorsolas}. ({legjobb_talalat} találat)")
print("\nTalálatok eloszlása:")
for talalat, db in sorted(talalat_statisztika.items()):
    if db > 0:
        print(f"  {talalat} találat: {db} sorsolás {'*' * db}")
----------------
Az utolsó 4 sorsolás eredménye alapján ha 2/3-át kizárom, akkor a harmadik sorsolásnál  telitalálat




20 sorsolás *3 7 találat

Nincsenek megjegyzések:

Megjegyzés küldése