大家帮我看看这道C语言题目出了什么问题

#include<stdio.h>#include<stdlib.h>#include<time.h>main(){intb,i;floata[6]={0};for(i=... #include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
int b,i;
float a[6]={0};

for(i=0;i<500;i++)
{
srand(time(NULL));
b=(rand()%6)+1;
a[b-1]++;
}
for(i=0;i<6;i++)a[i]=a[i]/500;
for(i=0;i<6;i++)printf("%d的概率为%.2f\n",i+1,a[i]);
printf("\n");

}
展开
 我来答
wangzuhe0558
2012-11-28 · TA获得超过111个赞
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:94.9万
展开全部
思路没有错,产生多个随即数的话,要把srand(time(NULL))放在for循环前面
也就是说,这函数只需要执行一次,后面每次调用rand()就可以了,不然在你这个for循环里产生的数都是相同的
匿名用户
2012-11-28
展开全部
1、随机函数的问题;
每次种子相同,srand()函数需要不同的种子;所以每次的种子都需要改变
参考:http://baike.baidu.com/view/876758.htm
2、样本容量;(概率的问题)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int b=0,i=0;
float a[6]={0};
int temp=time(NULL);
for(i=0;i<500;i++)
{
srand(temp);
b=rand()%6+1;
temp=b+rand()%100;
a[b-1]++;
}
for(i=0;i<6;i++)
a[i]=a[i]/500;
for(i=0;i<6;i++)
printf("%d的概率为%.2f\n",i+1,a[i]);
printf("\n");
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaogongwei10
2012-11-28 · TA获得超过249个赞
知道小有建树答主
回答量:253
采纳率:0%
帮助的人:132万
展开全部

没有什么问题啊!可以运行!没有错误!望采纳!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ba60f7e
2012-11-28
知道答主
回答量:14
采纳率:0%
帮助的人:2.7万
展开全部
for(i=0;i<6;i++)a[i]=a[i]/500;
for(i=0;i<6;i++)printf("%d的概率为%.2f\n",i+1,a[i]);
改为 for(i=0;i<6;i++)
{a[i]=a[i]/500;
}
printf("%d的概率为%.2f\n",i+1,a[i]);
printf("\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangzuhe0558
2012-11-28 · TA获得超过111个赞
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:94.9万
展开全部
思路没有错,需要把 srand(time(NULL))放在for循环前面
只需要执行一次这个函数,后面每次调用rand()就能产生不同的随即数了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匡匡干
2012-11-28 · TA获得超过420个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:268万
展开全部
这个产生随机数的方法产生的是伪随机数,它其实是以时间为种子,产生随机数。你的程序中,500次循环对cpu来说不过一瞬间的事情,时间不会有变化的,所以产生的随机种子都是固定的,产生的随机数也是固定的,所以500次循环的结果都是一样的,即某一个概率为1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式