C言語で重複のない乱数を生成する方法は何ですか?
C言語では、重複しないランダムな数値を生成するために、既に生成されたランダムな数値を配列に格納することができます。新しいランダムな数値を生成するたびに、配列内にそのランダムな数値が既に存在するかどうかを確認し、存在する場合は再度生成するまで、重複しないランダムな数値が生成されるまで繰り返します。具体的な手順は次のとおりです。
- 生成されたランダムな数値を保存するために、生成する必要があるユニークなランダムな数値の総数である配列を作成します。
- rand()関数を使用してランダムな数値を生成し、配列の要素と比較します。重複が存在する場合は再度生成し、重複しないランダムな数値を生成します。
- 生成された重複のないランダムな数字を配列に保存する。
- すべての重複しないランダムな数値が生成されるまで、上記の手順を繰り返します。
以下は簡単なサンプルコードです。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_RANDOM 10
int main() {
int randomArray[NUM_RANDOM];
int i, j, r;
srand(time(NULL));
for (i = 0; i < NUM_RANDOM; i++) {
do {
r = rand() % 100; // 生成0-99之间的随机数
for (j = 0; j < i; j++) {
if (r == randomArray[j]) {
break;
}
}
} while (j < i); // 如果重复则重新生成
randomArray[i] = r;
printf("%d ", r);
}
return 0;
}
この例では、10個の重複しないランダムな数値を生成し、画面に出力します。実際の応用では、必要に応じてランダムな数値の範囲や個数を変更することができます。