Как мне выполнить алгоритм пересчета в октаве

#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'