randomly select different elements of a vector

10 vues (au cours des 30 derniers jours)
stephen cusack
stephen cusack le 21 Juil 2016
Commenté : stephen cusack le 22 Juil 2016
Hello,
I am looking to select n random elements from a vector, but none of the elements can be the same. for example x=[1 1 1 2 3 4 4 4 5 6 7 7], I want to select 4 random unique elements from x, giving 1, 4, 7, 6.
Thanks
Steve

Réponse acceptée

Thorsten
Thorsten le 22 Juil 2016
x = [1 1 1 2 3 4 4 4 5 6 7 7];
for i = 1:4
ind = randperm(numel(x), 1); % select one element out of numel(x) elements, with the probability of occurrence of the element in x
r(i) = x(ind);
x(x==r(i)) = []; % delete this element from the sample, such that the picked elements are unique
end

Plus de réponses (2)

the cyclist
the cyclist le 21 Juil 2016
Modifié(e) : the cyclist le 21 Juil 2016
x=[1 1 1 2 3 4 4 4 5 6 7 7];
ux = unique(x);
rx = randsample(ux,4,false);
Note that this will break if there are fewer than four unique elements in x, but it is easy to put in a safeguard against that. For example,
rx = randsample(ux,min(numel(ux),4),false);
  1 commentaire
stephen cusack
stephen cusack le 22 Juil 2016
Apologies I did not frame the question very well. I am looking to take the sample based on the occurrence of each element. So 1 has probability 3/12, 2=1/12, 3=1/12, 4=3/12, 5=1/12, 6=1/12, 7=2/12. Once one element has been chosen it cannot be selected again.

Connectez-vous pour commenter.


Andrei Bobrov
Andrei Bobrov le 21 Juil 2016
x=[1 1 1 2 3 4 4 4 5 6 7 7];
a = unique(x);
out = a(randperm(numel(a),4))
  1 commentaire
stephen cusack
stephen cusack le 22 Juil 2016
Apologies I did not frame the question very well. I am looking to take the sample based on the occurrence of each element. So 1 has probability 3/12, 2=1/12, 3=1/12, 4=3/12, 5=1/12, 6=1/12, 7=2/12. Once one element has been chosen it cannot be selected again.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by