Habituellement une permutation aléatoire pour un tableau avec des éléments n signifie une distribution uniforme de n!
possibilités, et le shuffle Knuth est utilisé pour le faire:permutation aléatoire avec [i] = i
for i from n − 1 downto 1 do
j ← random integer with 0 ≤ j ≤ i
exchange a[j] and a[i]
Mais avec la contrainte que a[i] != i
, je n'ai aucune idée comment former une telle permutation uniformément.
Par exemple, avec n = 3, comment former une permutation aléatoirement à partir des possibilités ci-dessous?
{1, 2, 0}, {2, 0, 1}
Merci, j'ai trouvé le document officiel de cet algorithme [ici] (http://www.siam.org/proceedings/analco/2008/anl08_022martinezc.pdf). – peter