2016-04-16 11 views
0

//配列の値を返す関数を記述しました。値はランダムに選択された である必要があります。しかし、主な機能では、私はfuntionを呼び出すとき、それは私に同じ値を与えます。ランダムに数字を変えたいのですが、それを避けることはできますか?関数から別のシーケンスを返すことはできますか?

void a(); 

int main(){ 
a(); 
a(); 
return 0; 
} 
void a(){ 
int i, b[6]; 
srand(time(NULL)); 

for(i=0; i<6; i++){ 
    b[i]= rand()%10 +1; 
    printf("%d " , b[i]); 
    if(i==5) printf("\n"); 
} 
} 
+0

関数aでは、ランダムに選択されたシードを宣言して使用します。右? – hekinci

+0

正しいプロトタイプ関数宣言子を使用してください。とにかく、あなたが使用する関数( 'printf'、' rand'など)が宣言されていないので、コードは標準に準拠していません。 – Olaf

答えて

1
void a(); 

int main(){ 
srand(time(NULL)); 
a(); 
a(); 
return 0; 
} 
void a(){ 
int i, b[6]; 

for(i=0; i<6; i++){ 
    b[i]= rand()%10 +1; 
    printf("%d " , b[i]); 
    if(i==5) printf("\n"); 
} 
} 
2

あなたは一度だけランダマイザをシードする必要があります。お互いに後で2回すばやく播種することによって、時間が大きくなり、したがってシード値が同じであり、擬似乱数ジェネレータが同じシークエンスを2回返す可能性が大きくなります。

void a(); 

int main() 
{ 
    srand(time(NULL)); //Seed only once... 
    a(); 
    a(); 
    return 0; 
} 

void a() 
{ 
    int i, b[6]; 


    for(i=0; i<6; i++) 
    { 
     b[i]= rand()%10 +1; 
     printf("%d " , b[i]); 
     if(i==5) 
      printf("\n"); 
    } 
} 
関連する問題