【问题标题】:Write a program that will generate 1000 random integers in the range 0-49. (C++)编写一个程序,生成 0-49 范围内的 1000 个随机整数。 (C++)
【发布时间】:2016-10-24 23:19:23
【问题描述】:

我查看了此处提出的其他问题,但找不到我需要的内容。

我有这个问题;

编写一个程序,生成 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++ 很陌生,所以有人能解释一下如何让它循环吗?我错过了一些非常明显的东西吗?

【问题讨论】:

  • 您可以使用更长的变量名,朋友,因此您可以将其命名为 number_of_results_twentyfive_and_higher 而不是“z”……这将使您的代码在 10 个月后更易于阅读。
  • 投票结束是愚蠢的错字。大括号太多,在循环内返回。
  • rand() % 49 + 1 生成 1-49 范围内的数字。要生成 0-49 范围内的数字,请改用 rand() % 50

标签: c++ random


【解决方案1】:

你的for 循环中的大括号太多了。因此,您的returncouts 发生在for 循环中。它得到一个数字,打印出来,然后在它回来之前被退回。试试这个:

#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,则将其放入一个桶中,否则将其放入另一个桶中。”
  3. 您可能希望在将要使用的范围内声明变量。在这种情况下,您的 for 循环。

【讨论】:

  • 完美,对于 “完美” 的某些定义(不是我的)。它不符合你的规范,如果你有一个公平的 PRNG,你会看到上区间的数字计数存在偏差。
  • 这不是只生成 1-49 之间的数字吗?
  • @cwschmidt - 这不是操作的问题。但是,我会修改答案,因为这显然是我们现在正在做的……回答问题并执行免费代码审查。
  • 来自问题描述:“编写一个程序,生成 0-49 范围内的 1000 个随机整数。” 一个完整的答案也需要解决这个问题。你不应该责怪我们指出了显而易见的事情。而是考虑在未来不回答糟糕的问题。这也是您的职责之一。
  • 拒绝投票的充分理由的数量。代码只回答。 2016 年使用randsrand...
猜你喜欢
  • 1970-01-01
  • 2018-04-08
  • 2013-04-04
  • 2010-09-22
相关资源
最近更新 更多