Randomly select an element from a vector satisfying a condition
Afficher commentaires plus anciens
Dear experts,
I would like to randomly select an element from a vector satisfying a condition. In fact, I want to know what is the fastest way. For example, suppose vector X defined as follows:
X = [1 2 3 4 5 2 3 6 7 8 8 7 9 10 0 1 2 3 8 5 6 4];
How should I randomly select and identify the index of an element in this vector, which is greater than 2?
Thanks for your help,
Amir
Réponse acceptée
Plus de réponses (2)
Jos (10584)
le 1 Juil 2019
This is a two-step process:
- create an intermediate array with all elements of X satisfying your condition
- select a single element from that
You can combine the two steps in a single command:
randsample(X(X>2), 1)
1 commentaire
Amirhossein Moosavi
le 1 Juil 2019
David Goodmanson
le 2 Juil 2019
Relative speeds are going to depend on the length of X and the value N that the elements have to be greater than, (2 in the example). The following is generally faster, by a factor of 2 or so.
f = find(X > M); % M = 2
Ind = f(randi(length(f)));
3 commentaires
Amirhossein Moosavi
le 2 Juil 2019
David Goodmanson
le 2 Juil 2019
I agree, although the question did specify a single draw.
Amirhossein Moosavi
le 2 Juil 2019
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!