2017-11-26 24 views
0

私は、7つの数字を生成する非繰り返し番号ジェネレータを作成する割り当てが与えられています。私はrand関数を使いました。しかし、数字が繰り返しではないことを確認する方法がわからない。おかげで助け非繰り返し乱数を使用する(C言語)

int i, n; 
    time_t t; 
    n = 7; 
    srand((unsigned) time(&t)); 

    for(i = 0 ; i < n ; i++) { 
    printf("%d\t", rand() % 35);} 
+2

数字1〜Nの配列をランダムにシャッフルし、配列から最初の7個の数字を取得します。シャッフルするには:1〜Nのiに対して、要素iと範囲i..Nからランダムに選択された要素とを入れ替えます。または、Web検索を実行します。これは、よくある質問です。 –

+3

https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle – coderredoc

答えて

0

のためにあなたはそれ以降、あなたはそれがすでに作成されているか否か、新しく作成された乱数で配列の値を比較する必要がアレイと、次の時間にすべての以前に作成した乱数を格納することがあります。以下のコードを参照してください。

int i, n; 
time_t t; 
n = 7; 
int randval[n] 
int rval = 0; 
int j = 0; 
srand((unsigned) time(&t)); 
int found = 0; 
for(i = 0 ; i < n ;) { 
    rval = rand(); 
    j = 0; 
    found = 0; 
    while(j++ < i){ 
    if(rand[j] == rval){ 
     found = 1; 
     break; 
    } 
    } 
    if(!found){  
    randval[i] = rval; 
    i++; 
    printf("%d\t", rval % 35); 
    } 
} 
関連する問題