How to output a random element from a vector in matlab?

7 views (last 30 days)
I want to create a function called choose, where for example i can put in the command window choose(1:10) and the output would be a random number from 1 to 10. How do I do that?

Answers (2)

Walter Roberson
Walter Roberson on 20 Sep 2015
choose = @(samples) samples(randi(numel(samples)));
  2 Comments
Torsten
Torsten on 3 Apr 2022
Say you have a vector x of n numbers :
x = (x(1),x(2),...,x(n))
Now choosing a random element from this vector means to choose a number between 1 and n randomly and then return the element of x corresponding to that number. E.g. if 5 is chosen, x(5) is returned.
MATLAB's function "randi" can be used for this purpose. The command
randi(n)
returns a random integer between 1 and n.
So if you have a vector x, you can choose a random element from this vector by doing
n = numel(x); % determines the number of elements of vector x
i = randi(n); % returns a random integer between 1 and n
xrand = x(i); % xrand is the randomly chosen element from vector x

Sign in to comment.


per isakson
per isakson on 20 Sep 2015
One way
>> cssm(1:10)
ans =
2
>> cssm([3,6,9,12,1,2])
ans =
3
>> cssm(1:10)
ans =
6
>> cssm([3,6,9,12,1,2])
ans =
2
where
function val = cssm( vec )
ix = randi([1,length(vec)]);
val = vec(ix);
end
  3 Comments
per isakson
per isakson on 20 Sep 2015
Edited: per isakson on 20 Sep 2015
Lawrence Prophete
Lawrence Prophete on 20 Feb 2020
ix randomixes the index from 1 to the length of the vector, then val is the value of the randomized index

Sign in to comment.

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!