как использовать randn для генерации случайных чисел от 0 до 10 - PullRequest
0 голосов
/ 04 декабря 2011

Я пытаюсь сгенерировать 10 случайных чисел от 0 до 10, используя randn

Я знаю, что вы можете сделать это, используя rand

 fix(rand(1,10) .* (ones(1,10)*11)

но как я могу это сделать, используя randn?

спасибо заранее

Ответы [ 2 ]

0 голосов
/ 05 декабря 2011

Вы можете использовать кумулятивные и обратные кумулятивные функции распределения для нормального распределения, чтобы генерировать случайные числа в заданном диапазоне.

Если у вас есть набор инструментов статистики, вы можете использовать:

% 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 документацию.

0 голосов
/ 04 декабря 2011

Не разумно.

Одна из возможностей:

mod(fix(randn(1,10)), 11);

, но это не даст вам равномерного распределения.

Вы также можете использовать вероятностное интегральное преобразование для отображения одного распределения в другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...