2015-03-09 2 views
-1

Ищу любую функцию или метод для создания 2D-массив случайных чисел, среднее значение предопределен как:Генерировать случайные числа с предопределенной средой в Matlab?

array=generateNumbers(medianValue) 

возвратит 2D массив с медианным значением = medianValue

Возможно ли это?

+4

Возможно, вы можете проверить это сообщение, чтобы увидеть алгоритм: http://stackoverflow.com/questions/8373200/generate-numbers-in-r – Esteban

+3

Вы хотите нормально или равномерно распределенные номера (или что-то еще)? Вы заботитесь о значении? Могут ли цифры быть отрицательными? Какие границы вы хотите (или вы не хотите никаких ограничений)? Предложение Эстебана должно быть полезным, но если это не так, вам нужно будет ответить на этот вопрос, чтобы вы могли получить ответы. – David

+0

@Esteban Спасибо. Это то, что я ищу. –

ответ

3

Функция Matlab rand генерирует (псевдо) -случайные числа, равномерно распределенные на интервале [0,1]. Медиана этого распределения равна 0,5. Вы можете сделать медиану равной m, добавив m-0.5 к каждому номеру. Функция

function array = generateNumbers(m, n, medianValue) 
    array = rand(m,n)-0.5 + medianValue; 
end 

возвращает случайную матрицу размера т на п, взятую из равномерного распределения с заданной медианой.

Цифры, являющиеся случайными, далеки от уверенности в том, что фактическая медиана сгенерированных чисел будет равна данному медианному значению.

Для выяснения конкретной медиана выбранных номеров, вы можете сделать следующее:

function array = generateNumbers(m, n, medianValue) 
    array = rand(m,n); 
    array = array - median(array(:)) + medianValue; 
end 

связанных команд в help rand точки для других дистрибутивов в Matlab.

+0

Hm. Это порождает псевдослучайные числа с теоретическим ожидаемым (средним) значением «медианы», но на самом деле оно не генерирует числа с предопределенной медианной. Я предлагаю уточнить это для ОП и, возможно, переписать его вопрос, чтобы ответить на него, поскольку он, похоже, доволен этим, но в настоящее время это отвечает на другой вопрос. – knedlsepp

+1

Спасибо за предложение. Я решил расширить ответ, чтобы он дал обе вещи. –

+0

Хорошо. Я думал просто изменить исходный вопрос, но это еще лучше. ;-) – knedlsepp