swap only 2 elements in an array

42 visualizzazioni (ultimi 30 giorni)
Erik Lee
Erik Lee il 13 Ott 2015
Risposto: Mohammed il 27 Mag 2023
I'm try to come up with a function that can randomly swap 2 elements (and only 2 at a time) from an array of 20 unique numbers.
Say a=randperm(20) a=[4 1 9 13 5 20 19 ....] would become anew=[19 1 9 13 5 20 4 ....]

Risposta accettata

Star Strider
Star Strider il 13 Ott 2015
This works:
a=[4 1 9 13 5 20 19]
a([1 7]) = a([7 1])
a =
4 1 9 13 5 20 19
a =
19 1 9 13 5 20 4
  6 Commenti
Erik Lee
Erik Lee il 13 Ott 2015
Thank you!
Star Strider
Star Strider il 13 Ott 2015
My pleasure!

Accedi per commentare.

Più risposte (2)

Guillaume
Guillaume il 13 Ott 2015
a = randperm(20)
swapidx = randperm(numel(a), 2);
a(swapidx) = a(fliplr(swapidx))

Mohammed
Mohammed il 27 Mag 2023
if the array is 2D ( two dimantion ) you can use this and get it how it work
a=[10 20
30 40 ]
%For swapping number in Array 2D
%[10 is a 1] & [30 is 2] & [20 is a 3] & 40 is a 4
a([2 3])=a([3 2])
OUTPUT:
a =
10 20
30 40
a =
10 30
20 40

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by