Вы можете использовать кумулятивные и обратные кумулятивные функции распределения для нормального распределения, чтобы генерировать случайные числа в заданном диапазоне.
Если у вас есть набор инструментов статистики, вы можете использовать:
% Generate 10 values from uniform distribution on [0 1]
Y = rand(10,1);
% Find cumulative probabilities of 0 and 10
L = cdf('Normal', [0 10], mu, sigma)
% Generate uniformly distributed values on [L(1), L(2)].
R = L(1) + (L(2)-L(1))*Y;
% Random numbers within the range [0 10] from normal distribution
X = icdf('Normal', R, mu, sigma)
Xint = round(X)
Если у вас нет набора инструментов, вы можете использовать erfcinv
и erfc
вместо icdf
и cdf
с некоторым масштабированием. Подробнее см. erfcinv документацию.