How to shuffle rows in pairs?
    3 views (last 30 days)
  
       Show older comments
    
Hello. I have a 600 x 1 matrix. They can have only 8 values, let's say 1, 2, 3, 4, 5, 6, 7, and 8. I want to randomize the order of the rows but in pairs so 1 is always followed by 2, and 3 is always followed by 4, 5 is always followed by 6, and 7 is always followed by 8. Like there were only 4 elements: 1-2, 3-4, 5-6, and 7-8. But in pairs in rows (within the same column).
One case: if we have 
1
2
3
4
5
6
7
8
One of the many randomizations would be:
5
6
1
2
7
8
3
4
Thank you!
2 Comments
  Image Analyst
      
      
 on 23 Mar 2022
				I don't understand how the 600 and 8 relate to each other.  So do the numbers 1-8 repeat each other for rows 9-16, 17-24, etc. up to 593-600?  Do you want the shuffling to occur totally within the band, like rows 1-8 must still be in rows 1-8 and rows 593-600 must still be in rows 593-600?  Or can any row end up anyplace except that the following row must also be moved so that it's following it in its new row location?
Answers (2)
  Arif Hoq
      
 on 23 Mar 2022
        
      Edited: Arif Hoq
      
 on 23 Mar 2022
  
      try this:
A=randi([1 8],600,1);
for i=1:size(A,1)
    if A(i)==1
        A(i+1)=2;
    elseif A(i)==3
        A(i+1)=4;
    elseif A(i)==5
        A(i+1)=6;
    elseif A(i)==7
        A(i+1)=8;
    end
end
4 Comments
  Jan
      
      
 on 23 Mar 2022
				I'm not sure what the purpose of your code is. A shorter version:
for i = 1:size(A,1)
    if A(i) < 8
        A(i+1) = A(i) + 1;
    end
end
This might append an element and is not a random shuffling.
See Also
Categories
				Find more on Creating and Concatenating Matrices in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



