2016-03-28 15 views
-1

2つの異なる配列で異なる数値を生成しようとしています。何らかの理由で2つの配列の数値が同じです。2つの異なる配列で乱数を生成するには?(C++)

これは私のコードである:

#define SIZE 5 

void main(){ 

int* num1; 
int* num2; 

num1 = new int[SIZE]; 
num2 = new int[SIZE]; 

random(num1); 
random(num2); 
int i; 
for (i = 0; i < SIZE; i++) 
    cout << num1[i]; 

cout << endl; 

for (i = 0; i < SIZE; i++) 
    cout << num2[i];} 

及びランダム関数:

void random(int* num){ 

int i; 

time_t t; 
srand((unsigned)time(&t)); 

for (i = 0; i < SIZE; i++) 
    num[i] = (rand() % MAX + 1);} 

ouputをには常に2つのアレイ (例えばアレイ1の意志で同じ5桁の数字となり29384、配列2も29384)

どうすれば解決できますか?

ありがとうございました。

+3

はあなたがC++としてこれを正しくタグ付けされていますか?あなたはCのようなコードを使用するだけで多くの努力をしているようです。 – JVApen

+0

'random 'の外側で' srand'に呼び出しを移動し、 'main'に入れる必要があります。 –

答えて

2

プログラムは非常に速く動作しますように、このライン

srand((unsigned)time(&t)); 

は同じ値で乱数ジェネレータを見される可能性があります。

int main()後に開始時にこの行を入れて(voidを使用して間違いがある)

+0

私は今、とても愚かな気がする:(それは働く!ありがとう!:) –

2

randの使用を開始する前に、srandに一度だけ電話する必要があります。

すぐにコードが実行されるため、両方の呼び出しで同じ時間値が得られます。

1

srand((符号なし)時間(&));

この呼び出しをmainに移動する必要があります。

関連する問題