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

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)

choose = @(samples) samples(randi(numel(samples)));

2 Comments

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.

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

Thanks! it worked. could you explain how the function works?
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 Environment and Settings in Help Center and File Exchange

Asked:

on 20 Sep 2015

Commented:

on 3 Apr 2022

Community Treasure Hunt

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

Start Hunting!