Swap 3 random elements in an array
2 ビュー (過去 30 日間)
古いコメントを表示
How do I randomly swap three elements in an array? The element at selected position one will be moved to selected position two, the previous element at selected position two will be moved to position three, and the element at position three will be moved to selected position one.
For example: a=[4 2 3 1 5 7 6] would become anew=[4 2 6 1 3 7 5]
Thank you
0 件のコメント
採用された回答
Steven Lord
2018 年 8 月 20 日
Use randperm to select 3 elements (without replacement) from your vector.
a = [4 2 3 1 5 7 6]
ind = randperm(numel(a), 3)
a(ind) = a(ind([3 1 2]))
その他の回答 (1 件)
KALYAN ACHARJYA
2018 年 8 月 20 日
編集済み: KALYAN ACHARJYA
2018 年 8 月 20 日
% I have tried this only swap two elements or even numbers, definite swap with each other is only possible in even numbers.
a=randperm(7)
idx=randperm(3);
a(idx)=a(fliplr(idx))
I have tried in another way, you can do that
a=randperm(7)
n=randi(5);
new_array=a(:,:);
new_array([n n+1 n+2])=a([n+2 n n+1])
4 件のコメント
KALYAN ACHARJYA
2018 年 8 月 20 日
I have added (Edited answer) another way, pls try, if OK pls confirm it
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!