-6

此代码旨在列出从 1 到 9 的数字,并在每个数字旁边显示它在已生成的 10,000 个随机数中出现的频率。

编码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

main()
{
int counts[10];
int i;
int random;
srand(time(0));
for (i = 0; i < 10; i++)
counts[i] = 0;
for (i = 0; i<= 10000; i++)
{
random = (int)(10.0*rand()/(RAND_MAX+1.0));
counts[random]++;
}
for (i = 0; i<10; i++);
printf("%d occurs %f%%\n", i, i/100.0);
return(0);

}

但是,当我运行程序时,我会从 1-9 中得到一个我想要的列表,但它旁边列出了 1-9,但以十进制而不是频率。这是我运行它时得到的:

1 occurs 0.010000%
2 occurs 0.020000%
3 occurs 0.030000%
4 occurs 0.040000%
5 occurs 0.050000%
6 occurs 0.060000%
7 occurs 0.070000%
8 occurs 0.080000%
9 occurs 0.090000%

为了获得每个数字的频率,我需要更改什么,当我从终端运行代码时使用emacs它列出 1-9 但是当我在 Eclipse 中运行代码时,它只显示 10 在控制台中出现 0.100000%。发生这种情况有什么原因吗?

4

1 回答 1

3

看起来您正确存储了每个数字的频率,只是没有显示它们。您的输出根本不引用counts数组。

在这一行:

printf("%d occurs %f%%\n", i, i/100.0);

i/100.0应该是counts[i]/10000

于 2012-10-19T19:01:18.773 回答