Я хочу сгенерировать N-мерный вектор-столбец в matlab со средним значением 0.5 (дисперсия в порядке для настройки), но я хочу, чтобы все числа были положительными, кто-нибудь знает, как это сделать?Создать неотрицательное случайное число (matlab)
ответ
Это зависит от того, что вы хотите. Функция rand(v)
генерирует равномерное случайное распределение (диапазон [0,1]
Я считаю, хотя я не уверен, что либо 0, либо 1 теоретически возможные значения) в массиве с размерами v
.
Так что, если вы хотите 3x4x5x6
массив, вы могли бы сделать
myRandArray = rand([3 4 5 6]);
Если вы хотите, верхнее значение будет больше, вы могли бы сделать
myRandArray = maxVal * rand([3 4 5 6]);
Где maxVal
это наибольшее значение. И если вы хотите диапазон minVal
в maxVal
, а затем сделать
myRandArray = minVal + (maxVal - minVal) * rand([3 4 5 6]);
Для других распределений (как randn
для нормального распределения), вы можете внести изменения в вышеизложенное, очевидно. Если вы хотите «усеченное нормальное распределение» - вам может понадобиться, чтобы начать слишком много значений:
dims = [3 4 5 6];
n = prod(dims);
tooMany = 0.5 + randn(2 * n); % since you want mean = 0.5
tooMany(tooMany < 0) = [];
if numel(tooMany) > n
myRandArray = reshape(tooMany(1:n), dims);
end
Вы можете явно улучшить, но это общая идея.
Например, вы можете сгенерировать только значения n
, посмотреть, сколько неудач (скажем m), затем сгенерировать другое m * n/(n - m) и повторить по мере необходимости, пока вы не получите ровно n.
Обратите внимание, что среднее значение окончательного распределения больше не 0.5
, так как мы отрезаем хвост. «Нормальное распределение» не может оставаться «нормальным», если вы исключите определенные значения. Но тогда вы не указали, что распределение вы хотите ...
Вы можете попробовать это:
Э.Г. создать вектор из 1000 случайных величин, взятых из нормального распределения со средним значением 0,5 и стандартным отклонением 5.
a = 5;
b = 0.5;
y = a.*randn(1000,1) + b;
Чтобы сделать это положительный, то вы можете удалить все номера, которые являются отрицательными или нулевыми и генерировать еще до тех пор, пока вы не получите n положительных чисел.
Отъезд here для получения дополнительной информации.
Взятие 'abs' делает это очень не случайным распределением. Конечно, и снятие отрицательных значений ... но я думаю, что последнее меньше «повреждает» часть распределения, которая составляет> 0 – Floris
@Floris Year, 'abs' - плохой выбор. Обновлено. Благодарю. – herohuyongtao
- 1. Случайное целое число в MATLAB
- 2. Невозможно создать случайное число
- 3. Как создать случайное число?
- 4. matlab - как получить одно случайное число?
- 5. Создать случайное число без дублирования
- 6. Как создать неповторяющееся случайное число?
- 7. J2ME: Как создать случайное число?
- 8. Как создать уникальное случайное число?
- 9. Как создать нормально распределенное случайное число
- 10. проверить строку неотрицательное целое число в javascript
- 11. Как создать случайное 64-битное число?
- 12. создать объект случайное число раз ruby
- 13. Как создать случайное число из массива
- 14. Как создать случайное число с десятичными знаками
- 15. Как создать случайное число в swift 2
- 16. Как создать случайное число в Bash?
- 17. Как создать случайное число в NetBeans?
- 18. Не удается создать случайное число в JavaScript
- 19. Как создать случайное число на основе строки?
- 20. Как создать случайное число в C4? [C4Framework]
- 21. Создать случайное число из определенного числа?
- 22. Как создать реальное случайное число в C?
- 23. Мне нужно создать случайное число в Meteor
- 24. Как создать «большое» случайное число в Python?
- 25. Как создать случайное число в диапазоне?
- 26. math.random не позволил мне создать случайное число
- 27. Создать случайное четное число внутри диапазона?
- 28. Создать случайное число, не делящееся на x?
- 29. Создать случайное целое число с N бит?
- 30. Создать случайное число в пределах диапазона?
положительный или неотрицательный? – guness
Прочтите это http://stackoverflow.com/questions/9806158/generate-a-random-number-with-max-min-and-mean-average-in-matlab – herohuyongtao
Вы заботитесь о распределении чисел? – Floris