26.1. Napisati aplikaciju za simulator bacanja kockice, sa statističkom analizom bacanja.

Opis rješenja:

  1. roll_dice funkcija:
    • Simulira bacanje kockice koristeći random.randint(1, 6), što generira nasumičan broj od 1 do 6.
  2. simulate_rolls funkcija:
    • Simulira više bacanja kockice i koristi defaultdict za praćenje koliko se puta svaki broj pojavio.
  3. display_stats funkcija:
    • Prikazuje statistiku bacanja, uključujući broj pojavljivanja i postotak za svaki broj (1-6).
  4. main funkcija:
    • Omogućuje korisniku da unese broj bacanja kockice.
    • Poziva funkcije za simulaciju i prikaz statistike.
    • Pita korisnika želi li ponovno pokrenuti simulator.

Listing programa:

# 26011430
import random
from collections import defaultdict

def roll_dice():
    """Simulira bacanje kockice i vraća rezultat (broj od 1 do 6)."""
    return random.randint(1, 6)

def simulate_rolls(num_rolls):
    """
    Simulira više bacanja kockice i prikuplja statistiku.
    
    :param num_rolls: Broj bacanja kockice.
    :return: Rječnik sa statistikom (ključevi su brojevi 1-6, vrijednosti su broj pojavljivanja).
    """
    stats = defaultdict(int)  # Rječnik za praćenje broja pojavljivanja svakog broja
    for _ in range(num_rolls):
        result = roll_dice()
        stats[result] += 1
    return stats

def display_stats(stats, num_rolls):
    """
    Prikazuje statistiku bacanja kockice.
    
    :param stats: Rječnik sa statistikom.
    :param num_rolls: Ukupan broj bacanja.
    """
    print("\nStatistika bacanja kockice:")
    print("----------------------------")
    for number in sorted(stats.keys()):
        count = stats[number]
        percentage = (count / num_rolls) * 100
        print(f"Broj {number}: {count} puta ({percentage:.2f}%)")
    print("----------------------------")

def main():
    print("Dobrodošli u simulator bacanja kockice!")
    while True:
        try:
            num_rolls = int(input("Unesite broj bacanja kockice: "))
            if num_rolls <= 0:
                print("Broj bacanja mora biti veći od 0.")
                continue
            break
        except ValueError:
            print("Molimo unesite ispravan broj.")
    
    stats = simulate_rolls(num_rolls)
    display_stats(stats, num_rolls)

    # Ponovno pokretanje
    again = input("Želite li ponovno pokrenuti simulator? (da/ne): ").lower()
    if again == 'da':
        main()
    else:
        print("Hvala što ste koristili simulator bacanja kockice. Doviđenja!")

if __name__ == "__main__":
    main()


Ispis na ekranu:
Dobrodošli u simulator bacanja kockice!
Unesite broj bacanja kockice: 1000

Statistika bacanja kockice:
----------------------------
Broj 1: 159 puta (15.90%)
Broj 2: 176 puta (17.60%)
Broj 3: 161 puta (16.10%)
Broj 4: 176 puta (17.60%)
Broj 5: 167 puta (16.70%)
Broj 6: 161 puta (16.10%)
----------------------------
Želite li ponovno pokrenuti simulator? (da/ne): 

II izvršavanje
Dobrodošli u simulator bacanja kockice!
Unesite broj bacanja kockice: 1000

Statistika bacanja kockice:
----------------------------
Broj 1: 177 puta (17.70%)
Broj 2: 155 puta (15.50%)
Broj 3: 156 puta (15.60%)
Broj 4: 196 puta (19.60%)
Broj 5: 155 puta (15.50%)
Broj 6: 161 puta (16.10%)
----------------------------
Želite li ponovno pokrenuti simulator? (da/ne): 

Daljnji rad:

Ispis na ekranu:

Index