Napisałem tę funkcję w C i chcę, aby stworzyła losową permutację lub listę liczb od 1 do n. Mam problem z tym, żeby nie mieć powtarzających się numerów. Więc jeśli masz n = 4, chciałbym go do powrotu losową tablicę zawierającą 1-4 każdą tylko raz, na przykład: {1,3,4,2}Jak utworzyć losową permutację tablicy?
int* random(int n)
{
int* r = malloc(n * sizeof(int));
// initial range of numbers
for(int i=0;i<n;++i){
r[i]=i+1;
}
// shuffle
for (int i = 1; i <= n; ++i){
int j = rand() % i;
r[i] = r[j];
r[j] = i;
}
return r;
}
Wyszukiwanie Fisher-Yates shuffle ... –