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

2025-02-24 09:24:45
推荐回答(6个)
回答1:

思路没有错,产生多个随即数的话,要把srand(time(NULL))放在for循环前面
也就是说,这函数只需要执行一次,后面每次调用rand()就可以了,不然在你这个for循环里产生的数都是相同的

回答2:

1、随机函数的问题;
每次种子相同,srand()函数需要不同的种子;所以每次的种子都需要改变
参考:http://baike.baidu.com/view/876758.htm
2、样本容量;(概率的问题)
#include
#include
#include
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;
}

回答3:

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

回答4:

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");
}

回答5:

思路没有错,需要把 srand(time(NULL))放在for循环前面
只需要执行一次这个函数,后面每次调用rand()就能产生不同的随即数了

回答6:

这个产生随机数的方法产生的是伪随机数,它其实是以时间为种子,产生随机数。你的程序中,500次循环对cpu来说不过一瞬间的事情,时间不会有变化的,所以产生的随机种子都是固定的,产生的随机数也是固定的,所以500次循环的结果都是一样的,即某一个概率为1