14 lines
438 B
Python
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 |