2016-09-17 138 views
-1

我在Windows上使用Dev C++ GCC編譯器。我用這個代碼爲我的隨機數發生器,它打印由0的10張隨機數和1隨機數發生器代碼問題

#include<stdio.h> 
#include<stdlib.h> 
#include<time.h> 

int main() 
{ 
    int i,n; 
    int arr[50]; 
    //int z=0,o=0; 
    //time_t t; 

    printf("Enter the no of binary random nos you want"); 
    scanf("%d",&n); 


    //initializes the random number generator 
    srand(time(NULL)); 

    //print the random numbers 
    printf("The random numbers are: "); 

    for(i=0;i<n;i++); 
    { 
     arr[i]=rand()%2; 
     printf("%d",arr[i]); 

    } 

    return (0); 
} 

然而,只打印一個隨機數在同一時間,而不是10地指出我的錯誤將是任何幫助讚賞

+0

重寫'for(i = 0; i chux

+1

開始使用調試器。你會立即發現。 – Olaf

+0

注意'rand'通常被實現爲一個線性同餘發生器,LCG在最後一位出現了非常糟糕的行爲,並且使用'rand()%2'選擇了最後一位...您最好選擇有點從中間,甚至更好,以避免「蘭特」。 – pjs

回答

0

你在你的代碼的一個問題

for(i=0;i<n;i++); 

使用刪除

如果你正在使用for(i=0;i<n;i++);它將從0環到n,並在; 終止後,它會執行以下線和打印1隨機數。

通過使用;以下代碼將不會成爲for循環的一部分。

+0

該死,愚蠢的錯誤。感謝您指出 – sumit808

+0

@ sumit808,狗屎發生了一些時間:p – Himanshu

1

你在這一行

for(i=0;i<n;i++); 

結果有一個額外的;,你認爲什麼是循環體的循環

總外執行與警告編譯啓用,許多編譯器會警告你知道這件事。

+0

該死,愚蠢的錯誤。感謝您指出 – sumit808