私はこの関数を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;
}
ルックアップフィッシャー - イートシャッフル... –