gpt4 book ai didi

c++ - 编写一个程序,生成 0-99 范围内的 10000 个随机整数,并根据随机数据生成直方图

转载 作者:行者123 更新时间:2023-11-28 02:04:53 25 4
gpt4 key购买 nike

此代码是用 C++ 编写的。输出应该看起来像这样(假装点是空格):

0-9.......5...XXXXX

10-19...7...XXXXXXX

20-29...2...XX

等等

90-99...11..XXXXXXXXXXX

这是我目前所拥有的:

.
#include <iostream>

using namespace std;

int main() {

int count, x, i = 0;
int nums[10][10000] = { 0 };

for (count = 0; count < 10000; count++) {
x = rand() % 100;
if (x >= 0 && x <= 9)
{
nums[0][1]++;
}
else if (x >= 10 && x <= 19)
{
nums[1][1]++;
}
else if (x >= 20 && x <= 29)
{
nums[2][1]++;
}
else if (x >= 30 && x <= 39)
{
nums[3][1]++;
}
else if (x >= 40 && x <= 49)
{
nums[4][1]++;
}
else if (x >= 50 && x <= 59)
{
nums[5][1]++;
}
else if (x >= 60 && x <= 69)
{
nums[6][1]++;
}
else if (x >= 70 && x <= 79)
{
nums[7][1]++;
}
else if (x >= 80 && x <= 89)
{
nums[8][1]++;
}
else
{
nums[9][1]++;
}
}

cout << "0-9: ";
for (i = 0; i < nums[0][1]; i++) { cout << "X"; }
cout << endl;

cout << "10-19: ";
for (i = 0; i < nums[1][1]; i++) { cout << "X"; }
cout << endl;

cout << "20-29: ";
for (i = 0; i < nums[2][1]; i++) { cout << "X"; }
cout << endl;

cout << "30-39: ";
for (i = 0; i < nums[3][1]; i++) { cout << "X"; }
cout << endl;

cout << "40-49: ";
for (i = 0; i < nums[4][1]; i++) { cout << "X"; }
cout << endl;

cout << "50-59: ";
for (i = 0; i < nums[5][1]; i++) { cout << "X"; }
cout << endl;

cout << "60-69: ";
for (i = 0; i < nums[6][1]; i++) { cout << "X"; }
cout << endl;

cout << "70-79: ";
for (i = 0; i < nums[7][1]; i++) { cout << "X"; }
cout << endl;

cout << "80-89: ";
for (i = 0; i < nums[8][1]; i++) { cout << "X"; }
cout << endl;

cout << "90-99: ";
for (i = 0; i < nums[9][1]; i++) { cout << "X"; }
cout << endl;

}

由于程序需要 10,000 个随机整数,所以我的输出看起来不太像直方图。有没有人对如何解决这个问题有任何想法?我也不知道如何将为特定范围生成的随机数的数量添加到输出中。感谢您的帮助!

最佳答案

您将需要扩展输出。您的每一行可能有多达 1000 个 X。

  1. 找出所有“桶”中的最大值(即 nums[0] 到 nums[9] 的最大值)
  2. 将每个桶的值乘以屏幕宽度,比如 80。
  3. 将每个桶的计数除以您计算出的最大值
  4. 打印出那么多 X。

这将为您提供一个直方图,其中最长的结果达到第 80 列。

您的程序在其他方面似乎运行良好,除了您需要为 rand() 包含 stdlib.h 并且您处理数组的方式非常奇怪。为什么它是二维的?

您也可以只执行 n = rand() % 10 并使用 n 来索引您的数组。然后省略 if 语句。本质上是一样的。

如果您的问题是关于直方​​图的形状,请将其添加到解释您的预期的问题中。

关于c++ - 编写一个程序,生成 0-99 范围内的 10000 个随机整数,并根据随机数据生成直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37912466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com