multiple random samples of size k
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I would like to generate M random samples, each of size k , from the integers 1:n without replacement.
(i.e. generate an M-by-k matrix of random integers, where each row contains integers in [1,n], and within a row, no integer is repeated).
I will use this matrix to perform Monte Carlo hypothesis testing.
I can easily write this in Matlab myself., however...
I would like to use an in-built Matlab function, but I am unable to find one. Does such a function exist in Matlab?
Note: Matlab's bootstrap do not fulfill the criteria I listed above.
0 Kommentare
Antworten (3)
Walter Roberson
am 25 Jun. 2015
You could use randperm(n,k) in a loop. But randperm is not designed to generate an array. You can look into the randperm implementation and generalize it easily:
T = rand(M, n);
[~, order] = sort(T, 2);
randsamples = order(:,1:k);
0 Kommentare
Azzi Abdelmalek
am 25 Jun. 2015
Bearbeitet: Azzi Abdelmalek
am 25 Jun. 2015
n=6
k=3
row1=randperm(n,k)
For a matrix with M rows
n=6
k=3
M=5
A=cell2mat(arrayfun(@(x) randperm(n,k),(1:M)','un',0))
0 Kommentare
Star Strider
am 25 Jun. 2015
2 Kommentare
Star Strider
am 25 Jun. 2015
My pleasure. The perms function has the same limitations, but it and nchoosek are the only ones I know of that produce matrices. Otherwise, you’re reduced to using a loop with randperm to create your matrix.
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!