reginafeles's picture
Upload 40 files
d2213a5 verified
"""Генератор задач: несовместные события"""
from core.base_generator import BaseTaskGenerator
from models.task import Task
from config import COMPLEXITY_CONFIG
import random
class IncompatibleGenerator(BaseTaskGenerator):
"""Генератор задач про несовместные события"""
def generate(self) -> Task:
"""Генерация задачи"""
config = COMPLEXITY_CONFIG[self.complexity]
p1 = random.choice([0.1, 0.15, 0.2, 0.25, 0.3, 0.35])
p2 = random.choice([0.1, 0.15, 0.2, 0.25, 0.3])
topics = [
('экзамен', '«Вписанная окружность»', '«Тригонометрия»'),
('экзамен', '«Внешние углы»', '«Параллелограмм»'),
('экзамен', '«Производная»', '«Интегралы»'),
('кафе', 'миндальное печенье', 'мороженое'),
('кафе', 'рогалик', 'эклер')
]
category, topic1, topic2 = random.choice(topics)
if category == 'экзамен':
question = f"На экзамене по математике школьник отвечает на один вопрос из списка экзаменационных вопросов. Вероятность того, что это вопрос по теме {topic1}, равна {p1}. Вероятность того, что это вопрос по теме {topic2}, равна {p2}. Вопросов, которые одновременно относятся к этим двум темам, нет. Найдите вероятность того, что на экзамене школьнику достанется вопрос по одной из этих двух тем."
else:
question = f"В кафе каждому посетителю приносят одно бесплатное угощение от заведения, которого нет в меню. Вероятность того, что в качестве угощения от заведения принесут {topic1}, равна {p1}. Вероятность того, что в качестве угощения принесут {topic2}, равна {p2}. Найдите вероятность того, что в качестве бесплатного угощения от заведения посетителю И. принесут одно из двух: {topic1} или {topic2}."
answer = round(p1 + p2, 4)
steps = [
f"1. События несовместны, поэтому вероятности складываются",
f"2. P = P({topic1}) + P({topic2})",
f"3. P = {p1} + {p2} = {answer}"
]
return Task(
type='incompatible',
question=question,
answer=answer,
answer_fraction=f"{answer:.4f}",
solution=f"Вероятность = {p1} + {p2} = {answer}",
steps=steps,
complexity=self.complexity
)
def get_type(self) -> str:
return 'incompatible'