#matrix #octave
Вопрос:
я должен выбрать случайный столбец в случайной матрице , но иногда программы выбирают случайное число, которое больше размера матрицы.
n = 3 (10-3)*rand(1,1);
t = round(n);
x = randi(t,t);
u = 3 (10-3)*rand(1,1);
f = round(u);
if f < n amp; f ~= 0
for k = 1:t
e(k,1) = x(k,f);
end
end
Поэтому я использовал if для решения этой проблемы ,но я не знаю, как пересчитать случайное число, когда предложение f < n amp; f ~= 0
ложно. Пожалуйста, Помогите
Комментарии:
1. Можете ли вы объяснить, как вы создаете случайное число? Есть ли причина для того, чтобы не создавать случайное число, которое сразу удовлетворяет предложению?
2. Вы , очевидно, знаете об
randi
этом, потому что используете его.randi
выбирает случайный индекс, и вы должны использовать его для выбора индекса случайного столбца. Если у вас естьn
столбцы, тоrandi(n)
вам дается случайный номер столбца.3. Кроме того, если
A
это ваша матрица, тоA(:,i)
копирует номер столбцаi
. Для этого вам не нужна петля.4. Да! я использовал функцию random для создания случайного числа от 3 до 10 и использовал функцию de round для получения целого числа , которое я использовал для создания матрицы случайного размера , затем я сделал то же самое, но с другой переменной, чтобы выбрать случайный столбец.
Ответ №1:
Не на 100% это то, что вы пытаетесь сделать, но:
t = randi( [3,10], 1 ); % select a random number 't' in the range 3:10
x = randi( t, t ); % create a t-by-t matrix of random values in the range 1:t
r = randi( t ); % select a random number in the range 1:t
c = x(:,r) % select the rth column from 'x'