# Generate 10 numbers from matrix

3 views (last 30 days)
Say I have a matrix, v1, how would I be able to randomly generate 10 numbers within the existing matrix?
##### 2 CommentsShowHide 1 older comment
Ashante Isabella Bon on 27 Sep 2021
Yes to first question, all different positions, Just 10 numbers no need to be a vector

Image Analyst on 23 Sep 2021
To generate the numbers from random locations, without repeating any of the locations you need to use randperm(), not randi() like other answer(s). Using randi() will potentially allow the same location to be used multiple times. So use randperm() or randi() depending on what you want.
% Generate sample matrix -- a 7 row-by-9 column matrix.
m = randi(100, 7, 9)
% Get 10 random linear indexes with no location being a repeat:
randomIndexes = randperm(numel(m), 10)
% Extract data at those random locations:
extractedNumbers = m(randomIndexes)

Sulaymon Eshkabilov on 23 Sep 2021
Based on what you've stated the following could be what you want to obtain:
v1 = randi(10, 5, 5) %#ok % Is existing matrix
v1 = 5×5
2 5 2 1 10 7 5 3 1 6 10 4 4 1 9 2 6 5 3 1 8 5 2 10 2
IDX = randi([1, 10], 1, 10); % Randomly select indexes from the existing matrix
R = v1(IDX) % Randomly selected 10 numbers from v1
R = 1×10
4 5 5 10 8 5 8 5 2 8
Ashante Isabella Bon on 27 Sep 2021
This works thank you