"""Генератор задач: несовместные события""" 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'