Repeated Permutation of the same numbers
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
MiauMiau
el 20 de Dic. de 2016
Comentada: MiauMiau
el 21 de Dic. de 2016
Hi everyone,
Say I have an array a of 3 numbers (or alternatively of 4 or 5 or..):
a = [0.21 0.018 0.34];
I want to create an array b, which only contains these numbers, however in random order, though each of the numbers should appear the same number of times. For instance if b is [30,1], I would want each of the three numbers to appear 10 times. I know the randperm function, but it seems to me that using randperm is not so straightforward for this task?
Many thanks
0 comentarios
Respuesta aceptada
Adam
el 20 de Dic. de 2016
e.g. for a length 3, b length 30
idxA = repmat( 1:3, [1, 10] ); % Ensure each element appears same number of times
idxB = randperm( 30 );
idxA = idxA( idxB );
That will give you a random array of 10 each of 1s, 2s and 3s, indicating which of the 3 elements of a should be in each element of b. From there the rest is trivial.
0 comentarios
Más respuestas (1)
John D'Errico
el 20 de Dic. de 2016
Surely this is no harder than creating a new vector, that has the numbers repeated as often as you wish, then randomly permuting it.
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!