MATLAB: Create a random sequence with specified elements

arrayarrayscell arrayforfor loopfunctionif statementMATLABmatlab functionmatrix arrayrandomrandom number generatorsequencesolutiontimevector

Hi
Given the following vector
Q= [25 30 35 30 40 20 25 30]
I want to create a random vector S that contain the
Element 1, 25 times
Element 2, 30 times
Element 3, 35 times
Element 4, 30 times
Element 5, 40 times
Element 6, 20 times
Element 7, 25 times
Element 8, 30 times
such as
S= [1 8 3 4 5 6 7 8 1 2 3 5 7 4 2 2 5 7 ...]
The creation of S should be random. but the number of times an element is repetead should respect the quantity indicated in Q.

Best Answer

s = repelem(1:numel(Q),Q);
S = s(randperm(numel(s)))