How to permute a row vector without using perms(), permute() etc.
1 回表示 (過去 30 日間)
古いコメントを表示
I would like to permute a row vector, but without using perms(), permute() and so forth. I was wondering whether the following code answers these requirements. I mean, am I somewhat "cheating" by using randi()? I'd also appreciate any comments on the algorithm in general (although I know the function works well).
function Y = ex(X)
Y = zeros(1,length(X));
for i = 1:length(X)
d = randi(length(X));
Y(i) = X(d);
X(d) = [];
end
0 件のコメント
採用された回答
Matt J
2013 年 3 月 27 日
編集済み: Matt J
2013 年 3 月 27 日
It doesn't violate any requirements that you've mentioned, so I'm inclined to say it's legal. Here's another way, if you don't like randi for some reason
n=length(X);
[~,~,e]=qr(sprand(n,n,1/n));
Y=reshape(e*X(:),size(X)),
If the permuted order is supposed to be random, I don't think there's any avoiding the use some sort of random number generator.
2 件のコメント
Matt J
2013 年 3 月 27 日
Only you and presumably the instructor who assigned this to you can know what is "legal" for you.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Discrete Math についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!