How does randperm with 2 arguments work internally?
Mostrar comentarios más antiguos
Hello, I need to generate an efficient c code where I need to use randperm with 2 arguments. I could figure out from other answer how randperm with single argument works but randperm with 2 arguments seems to be more complex. At some places it uses more than 2 random numbers per value. My guess was that it first randomly chooses an element from the array and then places it in a random place in output, but I was wrong. I didn't get the same output on same seed.
Respuestas (1)
Roger Stafford
el 16 de Mayo de 2016
Editada: Roger Stafford
el 16 de Mayo de 2016
[~,p] = sort(rand(n,1));
p = p(1:k);
where p contains k unique values chosen from 1:n. Of course Mathworks may well use a different method by now.
2 comentarios
Anurag Agarwal
el 16 de Mayo de 2016
Walter Roberson
el 16 de Mayo de 2016
This is the method that MATLAB used until recently; the source for randperm was completely open and most of the regular volunteers looked at it. We do not know what routine is used now, as Mathworks went to some undocumented internal implementation.
Categorías
Más información sobre Logical en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!