Hi, all, I am trying to display a permutation, but I found the result is not correct, and I know where the problem was generated, but I don't know how to fix it, so I put it here, hope somebody will help me.


thanks


void swap(int * A, int i, int j)
{
int temp = A[i];
A[i] = A[j];
A[j] = temp;
}

//function used to exchange an element with the rest elements in the array in one loop
void permute(int *array, int n)
{
for (int i=n; i>0; i--)
swap(array, i-1, Random(i)); //problems occurs here.
}

// the following loop to display the n! times of the array(Fact=n!)
for (int k=Fact;k>0;k--)
{
permute(A, n);

//to display the new array

for (i=0; i<n; i++)
{ cout << A[i];
if (!((i+1)%10))
cout << "\n";
else
cout << " ";
}
here are how the results looks like at different excutives times
when n=3, in the 6 time permutation, some of the permutations are reapted. I know the problem is due to the Random(), it can guarrantees no repates in one loop in the Permut(), but it can't check if the array has the same value in corresponding positions at different Fact values.
---------------
1 0 2
0 2 1
1 2 0
1 0 2
1 0 2
2 1 0
-------------------
1 0 2
2 1 0
0 1 2
2 0 1
2 1 0
2 0 1