Spaces:
Runtime error
Runtime error
| """Генератор задач: бросание монеты""" | |
| from core.base_generator import BaseTaskGenerator | |
| from models.task import Task | |
| from fractions import Fraction | |
| from config import COMPLEXITY_CONFIG | |
| from utils.coin_utils import CoinCombinations | |
| import random | |
| class CoinsGenerator(BaseTaskGenerator): | |
| """Генератор задач про бросание монеты""" | |
| def generate(self) -> Task: | |
| """Генерация задачи""" | |
| config = COMPLEXITY_CONFIG[self.complexity] | |
| num_flips = random.randint(2, config['coin_flips']) | |
| target_heads = random.randint(0, num_flips) | |
| question = f"В случайном эксперименте симметричную монету бросают {num_flips} раза. Найдите вероятность того, что орел выпадет ровно {target_heads} раз." | |
| favorable = CoinCombinations.binomial_coefficient(num_flips, target_heads) | |
| total_outcomes = 2 ** num_flips | |
| answer_fraction = Fraction(favorable, total_outcomes) | |
| answer = round(float(answer_fraction), 2) | |
| steps = [ | |
| f"1. Общее число исходов: 2^{num_flips} = {total_outcomes}", | |
| f"2. Благоприятные исходы (выбор {target_heads} орлов из {num_flips}): C({num_flips},{target_heads}) = {favorable}", | |
| f"3. Вероятность = {favorable}/{total_outcomes} = {answer_fraction}" | |
| ] | |
| return Task( | |
| type='coins', | |
| question=question, | |
| answer=answer, | |
| answer_fraction=str(answer_fraction), | |
| solution=f"Вероятность = {favorable}/{total_outcomes} = {answer_fraction}", | |
| steps=steps, | |
| complexity=self.complexity | |
| ) | |
| def get_type(self) -> str: | |
| return 'coins' |