0
該程序應該運行仿真,以查看用戶輸入的數字是否少於三個隨機生成的數字。所有數字的範圍從0到1.用戶指定模擬運行的試驗次數,然後程序告訴用戶所有三個數字都小於它們的次數以及它不是的次數。問題在於,每次運行程序時,無論應該運行多少次試驗,我總會得到1次或1次失敗。我認爲這是因爲我只生成一組隨機數,而不是指定很多,但我不知道如何解決這個問題。在循環中生成多個隨機數C
這裏是代碼 -
int main()
{
int seed, trials, pass1, fail1, i, j, k;
float reli;
printf("Enter individual component reliability:\n");
scanf("%f", &reli);
printf("Enter number of trials:\n");
scanf("%u", &trials);
srand(time(NULL));
float rndm1 = (double)rand()/(double)RAND_MAX;
float rndm2 = (double)rand()/(double)RAND_MAX;
float rndm3 = (double)rand()/(double)RAND_MAX;
while(k <= trials); {
pass1 = 0;
fail1 = 0;
if (rndm1 <= reli && rndm2 <= reli && rndm3 <= reli){
pass1 = pass1 + 1;
}
else {
fail1 = fail1 + 1;
}
k++;
}
printf("# of passes = %d, #of failures = %d", pass1, fail1);
}
感謝
'之前的scanf( 「%U」 型,與試驗);' - >'的scanf( 「%d」 ,&trials);' –
當你定義一個本地非靜態變量(例如你的變量'k')時,它不會被自動初始化。它將具有*不確定*值。在沒有初始化的情況下使用它可能導致*未定義的行爲*。 –
您需要將rndm1,rndm2,rnd3和調用移至while循環內的rand()。你需要爲每個試驗產生新的隨機數(我猜這是)。 –