c primer plus 习题12.6

hyp41226 2013-10-09 11:40:40
6.编写一个产生1000个l到10范围内的随机数的程序。不必保存或打印数字,仅打印每个数被产生了多少次。让程序对10个不同的种子值进行计算。数字出现的次数相同吗?可以使用本章中的函数或ANSIC中的函数rand()和srand(),它们与我们的函数具有相同的形式。这是一个测试特定随机数发生器的随机性的方法。

在网上找到一段代码:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char i,seed[10]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int j,count[10];//存放1~10的10个统计量
for (i=0; i<10;i++)
{
for (j=0; j<10; j++)
count[j] = 0;
srand(seed[i]);
for (j=0; j<1000; j++)
count[rand()%10]++; //应该产生的随机数是0-9啊。。。
printf("seed = %d:\n",seed[i]);
for (j=0; j<10; j++)
printf("%d: %d times:\t",j+1,count[j]);
printf("\n");
}
return 0;
}


我认为应该是这样。
//lianxi5.c
#include <stdio.h>
#include <stdlib.h>
#define WIDTH 10
int main(void)
{
int i,seed[WIDTH] = {0,1,2,3,4,5,6,7,8,9};
int j,k,count[WIDTH];
for(i=0;i<WIDTH;i++)
{
for(j=0;j<WIDTH;j++)
count[j] = 0;
srand(seed[i]);
for(j=0;j<1000;j++)
{
k = rand() % 10 + 1;
count[k-1]++;
}
printf("seed = %d:\n",seed[i]);
for(j=0;j<10;j++)
printf("%d: %d times:\t",j+1,count[j]);
puts("\n");
}
return 0;
}

可是运行结果确是一样的。搞不明白啊。
...全文
59 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyp41226 2013-10-09
  • 打赏
  • 举报
回复
++简化。。。。。。。。。晕。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧