我用C編寫了這個函數,我希望它創建一個隨機排列或從1到n的數字列表。我很難讓它沒有重複的數字。所以,如果你有N = 4,我想它返回一個包含各1-4只一次隨機排列,例如:{1,3,4,2}如何創建一個數組的隨機排列?
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;
}
查找費希爾耶茨shuffle ... –