Распределение шума Лапласа в JavaScript

Я хочу создать веб-демонстрацию дифференциальной конфиденциальности. Для этого мне нужна JavaScript-реализация распределения шума Лапласа.

Я не смог найти основные распределения шума в JavaScript, такие как Gaussian. Это удивительно, потому что я хотел бы, чтобы было много классных демонстраций JavaScript, показывающих, как дистрибутив строится, рисуется нарисуйте, чтобы получить довольно колоколообразную кривую.

Как мне сгенерировать распределение шума Лапласа в Javascript?

1 ответ

Решение
       function sgn(x) {
            return x < 0 ? -1 : 1;
        }

        // From wikipedia:
        // Lap(X) = mu - b sgn(U) ln (1-2|U|) where U is a random variable between -0.5 and 0.5
        function laplace(mu, b) {
            var U = Math.random() - 0.5;
            return mu - (b * sgn(U) * Math.log(1 - 2* Math.abs(U)));
        }

        function privatize(F,deltaF,epsilon) {
            return F + laplace(0.0, deltaF/epsilon);
        }
Другие вопросы по тегам