Menu
CoddyTech

Sumy oczek

Część sekcji Statystyka w uczeniu maszynowym ścieżki Machine Learning w Coddy. Lekcja 15 z 64.

Rzuć dwiema kostkami i dodaj wyniki: 7 wypada sześć razy częściej niż 2. Policz pary ścianek:

Siatka 6 na 6 z sumami wyników dwóch kostek: pierwsza kostka po boku, a druga u góry. Sześć pól dających sumę 7 biegnie po przekątnej i jest zacieniowanych; tylko jedno pole daje sumę 2

Symulacja to potwierdza. Dodaj wyniki rzutów kostką, a następnie policz każdą sumę; value_counts wyświetla najczęstsze wyniki jako pierwsze:

rng = np.random.default_rng(2)
first = rng.integers(1, 7, size=3600)
second = rng.integers(1, 7, size=3600)
counts = pd.Series(first + second).value_counts()
print(counts.head(3))

To wyświetla:

7    605
6    522
8    443
Name: count, dtype: int64

ax.bar(counts.index, counts) rysuje cały namiot:

Wykres słupkowy przedstawiający 3600 rzutów dwiema kostkami: słupki rosną od około 100 dla sumy 2 do szczytu około 600 dla 7, a następnie opadają z powrotem do około 100 dla 12

Wykres słupkowy taki jak ten to Twój pierwszy wgląd w dowolną etykietę: model ledwie nauczy się jej rzadkich wartości.

challenge icon

Wyzwanie

Średni

W grze fabularnej obrażenia to suma wyników dwóch czterościennych kości, z których każda daje od 1 do 4. Program odczytuje liczbę ataków; kod startowy wykonuje rzuty i zapisuje wyniki w zmiennych first i second, a także opisuje wykres.

  1. Policz każde łączne obrażenia.
  2. Wypisz najbardziej prawdopodobne obrażenia i ich udział w atakach, zaokrąglony do 3 miejsc po przecinku.
  3. Przedstaw liczby jako słupki — po jednym dla każdej sumy — i wyświetl wykres.

Przy 16 atakach jest ich zbyt mało, by można było ufać wynikom:

Most likely damage: 6, share 0.312

Wykres słupkowy zatytułowany Damage Rolls dla 16 ataków: słupki przy wartościach 3, 5, 6, 7 i 8, najwyższy przy 6, z 5 rzutami

Następnie Coddy opisze Twój wykres. Przy większej liczbie ataków szczyt się ustabilizuje.

Spróbuj swoich sił

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

rolls = int(input())

# Nie zmieniaj poniższych linii
rng = np.random.default_rng(4)
first = rng.integers(1, 5, size=rolls)
second = rng.integers(1, 5, size=rolls)

fig, ax = plt.subplots()
ax.set_title("Damage Rolls")
ax.set_xlabel("Damage")
ax.set_ylabel("Rolls")

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Statystyka w uczeniu maszynowym

Poćwicz samodzielnie: Kompilator Python online