How can I keep just the arrays with 2 is before 3 after random swap 2 numbers.

3 vues (au cours des 30 derniers jours)
Hang Vu
Hang Vu le 17 Avr 2019
Commenté : Jan le 19 Avr 2019
with: s=[1,2,3,4,5];
  2 commentaires
madhan ravi
madhan ravi le 17 Avr 2019
Show how your output should look like.
Hang Vu
Hang Vu le 17 Avr 2019
Thanks for response! the output should be s=[1,4,2,3,5] or [2,4,1,5,3] for example. just to make sure 2 before 3

Connectez-vous pour commenter.

Réponse acceptée

Jan
Jan le 17 Avr 2019
Modifié(e) : Jan le 17 Avr 2019
s = [1,2,3,4,5];
s = s(randperm(numel(s))); % Random permutation?
% Or swap 2 elements:
index = randperm(numel(s), 2);
s(index) = s(flip(index));
s(s == 2 | s == 3) = [2, 3]; % Re-order the elements 2 and 3
  4 commentaires
Hang Vu
Hang Vu le 18 Avr 2019
Thank you for the re order idea! I applied for this:
s=[1,2,3,4,5];
L=size(s,2);
a=randi([1 L-1],1);
b=randi([1 L-1],1);
temp=s(a);
s(a)=s(b);
s(b)=temp
for i=1:5
ind1=find(s(:,:)==2);
ind2=find(s(:,:)==3);
end
if ind1>ind2
s(s == 2 | s == 3) = [2, 3];
s
else
s
end
Jan
Jan le 19 Avr 2019
This is not useful:
for i=1:5
ind1=find(s(:,:)==2);
ind2=find(s(:,:)==3);
end
The body of the loop is calculated 5 times with identical values. You can omit the loop:
ind1=find(s(:,:)==2);
ind2=find(s(:,:)==3);
But you can omit this test completely. This is sufficient for all cases:
s(s == 2 | s == 3) = [2, 3];
Why do you use L-1 in randi([1 L-1],1) ? I assume you want L instead.

Connectez-vous pour commenter.

Plus de réponses (1)

Raj
Raj le 17 Avr 2019
Try this:
s=[1,2,3,4,5]
%First random swap
x=randi([1,4],1,1);
if s(x)~=2
s([x x+1])= s([x+1 x]);
else
s([x x-1])=s([x-1 x]);
end
disp('After first random swap s=')
disp(s);
%second random swap
y=randi([1,4],1,1);
if s(y)~=2
s([y y+1])= s([y+1 y]);
else
%Do nothing
end
disp('After second random swap s=')
disp(s);
There may be better and optimized way of doing this also but this also works!

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by