multiple random samples of size k
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuestas (3)
Walter Roberson
el 25 de Jun. de 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 comentarios
Azzi Abdelmalek
el 25 de Jun. de 2015
Editada: Azzi Abdelmalek
el 25 de Jun. de 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 comentarios
Star Strider
el 25 de Jun. de 2015
2 comentarios
Star Strider
el 25 de Jun. de 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.
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!