gpt4 book ai didi

c - 如何按数字 block 打印 int 数组? (直方图打印)

转载 作者:行者123 更新时间:2023-11-30 19:37:12 25 4
gpt4 key购买 nike

对于这个程序,我打算生成一定数量的具有给定范围的随机整数。例如 0-10 之间的 100 个整数。

我创建了一个分布数组(称为 distTab),它显示了某个数字生成的次数。然后,我在 for 循环中将数字打印为星号。检查下面的图片。

enter image description here

这对于 0-10 效果很好,但假设我生成 0-1000 之间的 10000 个数字,我的打印函数会打印 distTab 的每个索引。我想按范围剪切它并在该范围内相互添加索引值。例如 0-100 -> 20 颗星、101-200 -> 21 颗星等等。

这是我当前打印直方图的代码:

int inc=0;

printf("\n%s\t%s\n","Number", "Histogram\n");
for(int i=0; i <= max; i++) {
if(distTab[i]==0)
continue;

printf(" %d\t",i);
int lim = distTab[i];

for(int j=1; j<=lim; j++){
printf("*");
inc++;
}
printf("\n");
}

随机数和 distTab 的创建方式如下(在 for 循环中):

int distTab[MAX_RAND];
memset(distTab, 0, sizeof distTab);

//for(0 -> desired number of ints)
rnd = (rand() % limit)+1;
if (max < rnd)
max = rnd; //max value generated.
distTab[(int)rnd]++;
//}

提前感谢您抽出时间,我希望我尽可能清楚地解释了我的问题。

最佳答案

缩放直方图。或者更好地以百分比形式打印。我会做类似的事情

lim = distTab[i] / max_distTab * max_lim;

这样你最常见的值总是与 相同。

关于c - 如何按数字 block 打印 int 数组? (直方图打印),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40176736/

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