problem with randsample when array with one element
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Jack Ie
le 3 Avr 2016
Réponse apportée : Aaron Schnydrig
le 6 Oct 2020
when vector has one element, the result of randsample is not correct for my problem. It returns a random number from 1 to that element.
for example:
n=[3];
x = randsample(n,1);
randsample returns x=1 or x=2 or x=3
but I want x=3 only
0 commentaires
Réponse acceptée
Chad Greene
le 3 Avr 2016
Perhaps you want
n = 3;
% get a random index no greater than the length of n:
ind = randsample(length(n),1);
% take a random value from n:
x = n(ind)
0 commentaires
Plus de réponses (3)
Image Analyst
le 3 Avr 2016
What do you mean by "when vector has one element"??? WHAT vector? randsample will return 1 number randomly chosen from the vector 1 ..... n, which in your case is [1,2,3] so of course x will be either 1, 2, or 3. What did you expect? If you want x to be 3 or n, simply do this
x = n;
0 commentaires
Roger Stafford
le 3 Avr 2016
That's what it is supposed to return. Read the website:
http://www.mathworks.com/help/stats/randsample.html
which states " y = randsample(n,k) returns a k-by-1 vector y of values sampled uniformly at random, without replacement, from the integers 1 to n."
0 commentaires
Aaron Schnydrig
le 6 Oct 2020
The question is quite old, but for the ones finding it over Google (like I did):
The simplest answer would be the following:
x = randsample(repmat(n, 2, 1), 1);
The repmat() function uses every value of your vector twice. Therefore, it will not change the probability of a certain element. However, it will make sure that your vector always has more than one element and is therefore used as a population.
0 commentaires
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!