2013-09-12 3 views
1

Я довольно новичок в Matlab и пытаюсь создать матрицу m-на-n, содержащую числа в указанном диапазоне (то есть между 0 и 250) с указанным шагом (т.е. [0 : 10: 250]).Заполнение массивов случайным номером int

Есть ли аналогичные функции, или обходной путь, чтобы:

r = randi ([a b], m , n)

, где я могу указать шаг сам?

ответ

3

claudiop определенно имел хорошее предложение, но альтернативы этому, в случае, если у вас есть набор чисел, которые вы хотите, чтобы случайным образом выбрать из, чтобы выбрать случайные индексы вектора, содержащие желаемые номера

nums = 0:10:250; 
randIdxs = randi([1,numel(nums)],m,n); 
nums(randIdxs); 

Это случайный выбор чисел из вектора nums, который будет содержать номера, которые вы хотите случайно переключаться между ними. Это решение становится более полезным, когда нет четкой картины между всеми числами, такими как [3,5,7,13,23,37]. Это не является четким интервалом или функцией между штрихами, поэтому, если вы хотите случайным образом выбирать простые числа, это решение будет хорошим.

Обновлено

Отредактированный код выше, чтобы использовать numel вместо length в случае числа были в многомерном массиве. Не огромное изменение вообще

+0

Я использовал случайный выбор из очень большой матрицы, но теперь мне нужно создать уже случайно выбранную матрицу (меньшую, чем исходную), потому что исходная матрица становится слишком большой для вычисления. – gmeroni

+0

Это сделает это – MZimmerman6

2

Вы можете использовать функцию randi с номерами от 0 до 25, а затем мультипликативный результат на 10.

r = mystep * randi ([a b] , m , n) 
2

Подумайте о преобразовании из набора случайных чисел над фиксированным диапазоном ([AB]) к другому набору с пропуском. Умножению следует позаботиться о пропуске ... тогда просто будьте осторожны конечным состояние:

r = 10*randi([0 25], m, n); 

я оставляю общую формулу для вас ... если вы хотите, вы можете обернуть это в другой функции randi_skip() ,

Смежные вопросы