2016-10-24 23 views
-3

私はここで質問された他の質問を見回しましたが、私が必要とするものを見つけることができません。0〜49の範囲の1000個のランダムな整数を生成するプログラムを作成します。 (C++)

この質問があります。

0-49の範囲で1000個のランダムな整数を生成するプログラムを作成します。それは、どのくらいの数が0-24の範囲にあり、いくつが25-49の範囲に含まれているかを数えて報告する必要があります。

これはこれまでのところです。

#include<iostream> 
#include<ctime> //For time() 
#include<cstdlib> //For rand() and srand() 


using namespace std; 
int main() 
{ 
    int x; 
    int counter = 0; 
    int y = 0; 
    int z = 0; 

    srand(time(NULL)); 

    for (counter = 0; counter < 1000; counter++) { 
    { 
     x = rand() % 49 + 1; 
     if (x >= 0 && x <= 24) 
     { 
      y++; 
     } 
     else if (x > 24 && x <= 49) 
     { 
      z++; 
     } 
    } 

    cout << "Number of numbers between 0-24: " << y << endl; 
    cout << "Number of numbers between 25-49: " << z << endl; 

    system("pause"); 
    return 0; 
    } 
} 

かつてはループが、私は1000の数字が生成され、分類されるまで何度もループにそれを取得する方法を理解することはできません。

私はC++には新しく、誰かがこれをループする方法を説明することができましたか?私は何かを見逃したことがありますか?

+0

あなたは長い変数名、友人を使うことができるので、 "z"の代わりにnumber_of_results_twentyfive_and_higherと呼ぶことができます。あなたのコードを10ヶ月間読みやすくします。 – sova

+0

愚かなtypoとして閉じる投票。ループ内に戻ってきたブレースが多すぎます。 – juanchopanza

+2

'rand()%49 + 1'は1-49の範囲の数値を生成します。 0-49の範囲で数値を生成するには、代わりに 'rand()%50'を使います。 – IInspectable

答えて

3

あなたのforループに多すぎる中括弧が1つあります。あなたのreturncoutのループは、forループ内で起こっています。それは1つの数字を取得し、プリントアウトしてから戻ってくる前に返されます。これを試してください:あなたのコードについて

#include<iostream> 
#include<ctime> //For time() 
#include<cstdlib> //For rand() and srand() 

using namespace std; 
int main() 
{  
    srand(time(NULL)); 

    for (counter = 0; counter < 1000; counter++) 
    { 
     int x;   //See Note #3 Below 
     int counter = 0; 
     int y = 0; 
     int z = 0; 
     x = rand() % 50; //See Note #1 Below 
     if (x < 25)  //See Note #2 Below 
     { 
      y++; 
     } 
     else 
     { 
      z++; 
     } 
    } 

    cout << "Number of numbers between 0-24: " << y << endl; 
    cout << "Number of numbers between 25-49: " << z << endl; 

    system("pause"); 
    return 0; 
} 

3ノート:

  1. あなたの乱数生成器のみを取得している数字1-49、0-49ありません。
  2. if文をそのように構造化する必要はありません。あなたがしなければならないことは、「25未満の場合は1つのバケットに入れ、それ以外の場合はそれを別のバケットに入れてください」と言うだけです。
  3. 変数は、使用されるスコープで宣言することができます。この場合、ループはforです。
+1

「完璧な」*(私ではない)の定義には完璧です。それはあなたの仕様を満たしておらず、あなたが公正なPRNGを持っているならば、上の間隔の数字の数に偏りがあります。 – IInspectable

+1

これは1-49の間の数字を生成するだけではありませんか? – cwschmidt

+1

@cwschmidt - それはopの質問ではありませんでした。しかし、私は答えを見直します。なぜなら、これは明らかに私たちがやっていることです...質問に答えることと、無料のコードレビューを実行することです。 – Hill

関連する問題