2016-09-17 5 views
-1

WindowsでDev C++ GCCコンパイラを使用しています。私は0と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のランダムな数字を印刷し、私の乱数生成のため、このコードを使用ししかし、それは代わりに10の時に一つだけの乱数を出力する私のミスを指摘における任意の助けになりますあなたは

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

コード内で一つの問題を抱えている

+0

for(i = 0; i chux

+1

デバッガの使用を開始します。あなたはすぐに分かったでしょう。 – Olaf

+0

'rand'は線形合同ジェネレータとして実装されることが多いことに注意してください。LCGsは最後のビットで悪い動作をしていて、' rand()%2'を使って最後のビットをピックしています。真ん中からちょっと離れていて、 'rand'を避ける方が良いでしょう。 – pjs

答えて

0

を高く評価し、エンド

使用で;を削除

それはラインとプリント1乱数下に実行され、その後それは0からnまでループし、; for(i=0;i<n;i++);で終端を使用している場合。

;以下のコードを使用すると、ループの部分はforになりません。

+0

たわごと、悪い愚かな間違い。 – sumit808

+0

@ sumit808を指摘してくれてありがとう、ちょっと時間がかかる:p – Himanshu

1

あなたはその結果この行の余分な;

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

を持って、あなたが考えることは、ループの本体は常に有効に警告してコンパイルするループ

外で実行され、多くのコンパイラはなりますそれについてあなたに知らせてください。

+0

たわごと、悪い愚かな間違い。それを指摘してくれてありがとう – sumit808