MATLAB Answers

Random vector non repeated otherwise create new vector

1 view (last 30 days)
Yigitalp Ozmen
Yigitalp Ozmen on 12 Jul 2019
Answered: Yigitalp Ozmen on 12 Jul 2019
Hello,
I have number list from 1 to 5. We know there are 120 different permutation for these. I want to write a rule that for my algorithm, I want to create a permutation that does not creaated before. For example,
1 2 3 4 5 first
2 3 4 5 1 second
...
2 3 4 5 1 nth it shouldn't be created. It is already in the second iteration.
So, by this manner creations should end at most 120th trial.
Can you help me solve this? I'm using randperm
Thank you.

  2 Comments

Guillaume
Guillaume on 12 Jul 2019
randperm doesn't keep track of previously generated permutations, so it's never going to be useful for this.
Why can't you just generate at once the 120 permutations (with perm) and shuffle them if needed?

Sign in to comment.

Answers (2)

Brendan Hamm
Brendan Hamm on 12 Jul 2019
p = perms(1:5);
idx = randi([1,size(p,1)]);
selection = p(idx,:)

  0 Comments

Sign in to comment.


Yigitalp Ozmen
Yigitalp Ozmen on 12 Jul 2019
Thank you for your answers. What about for bigger numbers such as 10. Matlab cant generate 10!. But maybe it can generate permutations different from previous ones. Is it achivable?

  0 Comments

Sign in to comment.