problem with randsample when array with one element
13 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Chad Greene
2016 年 4 月 3 日
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 件のコメント
その他の回答 (3 件)
Image Analyst
2016 年 4 月 3 日
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 件のコメント
Roger Stafford
2016 年 4 月 3 日
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 件のコメント
Aaron Schnydrig
2020 年 10 月 6 日
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 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!