How to output a random element from a vector in matlab?
7 views (last 30 days)
Show older comments
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?
0 Comments
Answers (2)
Walter Roberson
on 20 Sep 2015
choose = @(samples) samples(randi(numel(samples)));
2 Comments
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
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
on 20 Sep 2015
Edited: per isakson
on 20 Sep 2015
- see:   randi, Uniformly distributed pseudorandom integers
- see:   Examine Values While Debugging
- set a break point at the first line of the function
- call the function
- etc.
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
See Also
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!