Загрузка данных
# =====================================================
# РЕШЕНИЕ ЗАДАЧ ПО ТЕОРИИ ВЕРОЯТНОСТЕЙ
# Красивое оформление + подробные комментарии
# =====================================================
import random
from colorama import init, Fore, Style
init(autoreset=True) # для красивого цвета в консоли
def print_header(text):
print(Fore.CYAN + "="*60)
print(Fore.YELLOW + f" {text.center(56)}")
print(Fore.CYAN + "="*60)
def print_result(task_num, description, result, fraction=None):
print(Fore.WHITE + f"Задача {task_num}.")
print(Fore.LIGHTGREEN_EX + description)
if fraction:
print(Fore.MAGENTA + f"Ответ: {result} ({fraction})")
else:
print(Fore.MAGENTA + f"Ответ: {result}")
print("-" * 55)
# =====================================================
# Задача 47
# =====================================================
print_header("ЗАДАЧА 47")
p_positive = 0.5
p_all_positive = p_positive ** 3
print_result(
47,
"Вероятность, что при трёх независимых измерениях все ошибки будут положительными:",
f"{p_all_positive:.5f}",
"1/8"
)
# =====================================================
# Задача 42
# =====================================================
print_header("ЗАДАЧА 42")
p_12 = 0.49
p_14 = 0.37
p_16_18 = 0.14
p_12_or_14 = p_12 + p_14
print_result(
42,
"Вероятность, что случайно выбранный початок кукурузы имеет 12 или 14 рядов:",
f"{p_12_or_14:.2f}",
"0,86"
)
# =====================================================
# Задача 49
# =====================================================
print_header("ЗАДАЧА 49")
questions = 5
p_correct_one = 1/2
p_all_correct = p_correct_one ** questions
print_result(
49,
"Ученик отвечает на 5 вопросов «да» или «нет» наугад.\n"
"Вероятность, что все ответы окажутся правильными:",
f"{p_all_correct:.6f}",
"1/32"
)
# =====================================================
# Задача 48 — Шахматы
# =====================================================
print_header("ЗАДАЧА 48")
total_pieces = 16 # стандартный набор белых фигур
bishops = 2 # два слона
p_first = bishops / total_pieces
p_second = (bishops - 1) / (total_pieces - 1)
p_both = p_first * p_second
print_result(
48,
"Из набора шахматных фигур (одного цвета) наугад берут две фигуры.\n"
"Какова вероятность, что обе окажутся слонами?",
f"{p_both:.5f}",
f"{bishops*(bishops-1)}/{total_pieces*(total_pieces-1)} = 1/120"
)
# =====================================================
# Монте-Карло симуляции (для проверки)
# =====================================================
print_header("ПРОВЕРКА ЧЕРЕЗ СИМУЛЯЦИИ (Монте-Карло)")
def simulate_all_positive_errors(trials=100_000):
success = sum(1 for _ in range(trials) if all(random.choice([True, False]) for _ in range(3)))
return success / trials
def simulate_all_correct_answers(trials=100_000):
success = sum(1 for _ in range(trials) if all(random.random() < 0.5 for _ in range(5)))
return success / trials
def simulate_two_bishops(trials=100_000):
pieces = ['bishop']*2 + ['other']*14
success = 0
for _ in range(trials):
chosen = random.sample(pieces, 2)
if chosen.count('bishop') == 2:
success += 1
return success / trials
print(Fore.LIGHTCYAN_EX + "Симуляция Задачи 47:", f"{simulate_all_positive_errors():.5f} (теория: 0.125)")
print(Fore.LIGHTCYAN_EX + "Симуляция Задачи 49:", f"{simulate_all_correct_answers():.5f} (теория: 0.03125)")
print(Fore.LIGHTCYAN_EX + "Симуляция Задачи 48:", f"{simulate_two_bishops():.5f} (теория: 0.00833)")
print("\n" + Fore.GREEN + "Все симуляции близки к теоретическим значениям ✓")
# =====================================================
# Дополнительно: красивый вывод всех ответов в таблице
# =====================================================
print_header("ИТОГОВАЯ ТАБЛИЦА ОТВЕТОВ")
print(f"{Fore.WHITE}{'Задача':<8} {'Описание':<50} {'Вероятность':<15} {'Дробь'}")
print("-" * 85)
print(f"{Fore.LIGHTWHITE_EX}47 {'Все ошибки положительные':<50} {0.125:<15} 1/8")
print(f"{Fore.LIGHTWHITE_EX}42 {'12 или 14 рядов у кукурузы':<50} {0.86:<15} 0.86")
print(f"{Fore.LIGHTWHITE_EX}48 {'Обе фигуры — слоны':<50} {0.00833:<15} 1/120")
print(f"{Fore.LIGHTWHITE_EX}49 {'Все 5 ответов правильные':<50} {0.03125:<15} 1/32")