Menu
CoddyTech

Tổng điểm khi gieo xúc xắc

Thuộc phần Thống kê cho machine learning trong hành trình Machine Learning của Coddy. Bài học 15 trên 64.

Tung hai con xúc xắc rồi cộng điểm của chúng: tổng 7 xuất hiện nhiều gấp sáu lần tổng 2. Hãy đếm các cặp mặt xúc xắc:

Lưới 6 nhân 6 thể hiện tổng điểm của hai con xúc xắc, con thứ nhất nằm dọc bên cạnh và con thứ hai nằm ngang phía trên. Sáu ô tạo thành tổng 7 nằm trên đường chéo từ góc này sang góc kia và được tô màu; chỉ có một ô tạo thành tổng 2

Một mô phỏng cũng cho kết quả phù hợp. Cộng hai lần gieo xúc xắc, rồi đếm từng tổng; value_counts liệt kê các tổng xuất hiện nhiều nhất trước:

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))

Kết quả in ra:

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

ax.bar(counts.index, counts) vẽ toàn bộ chiếc lều:

Biểu đồ cột của 3600 lần gieo hai viên xúc xắc: các cột tăng từ khoảng 100 ở tổng 2 lên đỉnh khoảng 600 ở 7, rồi giảm xuống khoảng 100 ở 12

Biểu đồ cột như thế này giúp bạn có cái nhìn đầu tiên về bất kỳ nhãn nào: mô hình sẽ hầu như không học được các giá trị hiếm gặp.

challenge icon

Thử thách

Trung bình

Trong trò chơi nhập vai, sát thương là tổng của hai viên xúc xắc bốn mặt, mỗi viên có giá trị từ 1 đến 4. Chương trình đọc số đòn tấn công; phần code có sẵn tung xúc xắc vào first và second, rồi đặt nhãn cho biểu đồ.

  1. Đếm số lần xuất hiện của mỗi tổng sát thương.
  2. In ra mức sát thương có khả năng xảy ra cao nhất và tỷ lệ số đòn tấn công tương ứng, với 3 chữ số thập phân.
  3. Vẽ số lần xuất hiện dưới dạng các cột, mỗi tổng ứng với một cột, rồi hiển thị biểu đồ.

Với 16 đòn tấn công, số lượng còn quá ít để tin cậy:

Most likely damage: 6, share 0.312

Biểu đồ cột có tiêu đề Damage Rolls cho 16 đòn tấn công: các cột tại 3, 5, 6, 7 và 8, cột cao nhất ở 6 với 5 lần xuất hiện

Sau đó, Coddy mô tả biểu đồ của bạn. Khi có nhiều đòn tấn công hơn, đỉnh biểu đồ sẽ ổn định.

Tự làm thử

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

rolls = int(input())

# Đừng thay đổi các dòng bên dưới
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")

# Viết code của bạn bên dưới
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Thống kê cho machine learning

Tự luyện tập: Trình biên dịch Python online