У меня есть код, который генерирует случайные числа, имеющие среднее значение 0f 1 и стандартное отклонение 0,5.но как мне изменить этот код, чтобы я мог вычленить гауссовы случайные числа для любого заданного среднего значения и дисперсии?
Если x
- случайная величина из гауссовского распределения со средним μ
и стандартнымотклонение σ
, тогда αx+β
будет иметь среднее значение αμ+β
и стандартное отклонение |α|σ
.
Фактически код, который вы разместили, уже выполняет это преобразование.Он начинается со случайной переменной со средним значением 0 и стандартным отклонением 1 (полученной из функции random_normal
, которая реализует преобразование Бокса-Мюллера ), а затем преобразует ее в случайную переменную со средним значением 1 и стандартнымОтклонение 0,5 (в массиве rands
) путем умножения и сложения:
double random_normal(); /* normal distribution, centered on 0, std dev 1 */
rands[i] = 1.0 + 0.5*random_normal();