Метод генерации случайной нормально распределённой величины
// Стандартный "дотнетовский" рандомайзер
let random = new System.Random()
// Генератор нормально распределённых случайных чисел методом полярных координат.
// meanvalue - мат. ожидание генерируемой величины,
// dispersion - её дисперсия.
// Данный алгоритм умеет генерировать две независимые величины!
let polarRandomizer (meanvalue : double) (dispersion : double) =
let mutable s = 2.
let mutable vA = 0.
let mutable vB = 0.
while s >= 1. do
vA <- 2. * random.NextDouble() - 1.
vB <- 2. * random.NextDouble() - 1.
s <- vA**2. + vB**2.
let x = Operators.sqrt(dispersion)*(vA * Operators.sqrt(-2. * Operators.log(s) / s)) + meanvalue