dnd5-scripts/generate_npc/norminv.py
2026-06-17 22:32:48 +03:00

14 lines
438 B
Python

# 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