# norminv.py import random import math def generate_normal_random(mean: float, std_dev: float) -> float: """Box-Muller transform → нормальное распределение N(mean, std_dev).""" u1 = random.random() u2 = random.random() # защита от log(0) while u1 == 0: u1 = random.random() z0 = math.sqrt(-2.0 * math.log(u1)) * math.cos(2.0 * math.pi * u2) return z0 * std_dev + mean