-1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int dorand(){
int i;
srand(time(0));
i = rand()%3+1;
return i;
}
int main(){
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
return 0;
}
問題は4つのprintfが同じ番号を出力しています。 私はrand()をmain関数で直接実行すると何の問題もありませんが、関数を呼び出すとランダムな世代が同じ数に依存します。誰かが共有するいくつかの経験がありますか?rand()の数値はCの関数に依存しています
は、私が試してみた:
int main(){
srand(time(0)) //seeding in the main function before calling the dorand function
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
return 0;
}
また
int dorand(){
int i;
i = 0; //clearing the variable before attributing a new rand value
srand(time(0));
i = rand()%3+1;
return i;
}
申し訳ありませんが、私は何かを間違えた場合は、
シードをリセットしたままにしておきます。 –
すべての関数呼び出しでシードを変更しないようにしてください。この 'srand(time(0));をmain(または他の場所)で1回だけ呼び出してみてください。 – jamesjaya
働いて、ありがとうたくさんの男 –