How to output a random element from a vector in matlab?
Mostra commenti meno recenti
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?
Risposte (2)
Walter Roberson
il 20 Set 2015
choose = @(samples) samples(randi(numel(samples)));
2 Commenti
per isakson
il 20 Set 2015
That's clever!
Torsten
il 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
il 20 Set 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 Commenti
Hussam Alzahrani
il 20 Set 2015
per isakson
il 20 Set 2015
Modificato: per isakson
il 20 Set 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
il 20 Feb 2020
ix randomixes the index from 1 to the length of the vector, then val is the value of the randomized index
Categorie
Scopri di più su Shifting and Sorting Matrices in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!