Числовой ряд с равномерным распределением для заданной дисперсии и среднего значения в Matlab

Я хочу сгенерировать n точек, используя равномерное распределение для определенной дисперсии (v) и среднего значения (m).

В настоящее время я использую MATLAB для выполнения этой задачи. Это можно сделать для нормального распределения, используя y = v.*randn(n,1) + m;

Есть ли простой способ сделать это в MATLAB?


person ccc    schedule 18.10.2017    source источник
comment
Да, но я хочу, чтобы набор данных был сгенерирован с использованием равномерного распределения.   -  person ccc    schedule 18.10.2017


Ответы (1)


Для равномерного распределения используйте rand (randn для нормального распределения).

rand генерирует числа, равномерно распределенные на интервале (0,1), поэтому среднее значение равно 0,5, а дисперсия — 1/12. Чтобы получить другое среднее значение или дисперсию, вам нужно сдвинуть и масштабировать:

desired_mean = 3;
desired_var = 5;
N = 1e6; % number of samples
x = sqrt(12*desired_var) * (rand(1,N)-0.5) + desired_mean;

Проверять:

>> mean(x)
ans =
   3.003083912414557
>> var(x)
ans =
   4.998928353933906
person Luis Mendo    schedule 18.10.2017