c语言问题,求高手解答
使用循环语句和随机函数rand()模拟抛1000000次骰子,统计出现1-6点的次数及所占比例,最后输出,如下图所示:(提示:(1)系统函数rand():产生0-3276...
使用循环语句和随机函数rand()模拟抛1000000次骰子,统计出现1-6点的次数及所占比例,最后输出,如下图所示:
(提示:(1)系统函数rand():产生0-32767随机整数,头文件是stdlib.h;系统函数srand(int seed):seed相同,产生随机数中也相同,头文件是stdlib.h;系统函数time(0):返回系统时间的总秒数,头文件是time.h; (2)要产生1-6的随机整数,方法是得到1+rand()%6;(3)分类统计要用到多分支语句。) 展开
(提示:(1)系统函数rand():产生0-32767随机整数,头文件是stdlib.h;系统函数srand(int seed):seed相同,产生随机数中也相同,头文件是stdlib.h;系统函数time(0):返回系统时间的总秒数,头文件是time.h; (2)要产生1-6的随机整数,方法是得到1+rand()%6;(3)分类统计要用到多分支语句。) 展开
1个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char **argv)
{
int dices[6] = {0,0,0,0,0,0};
int dots, i;
long total = 1000000;
long l;
srand(time(NULL));
for (l = 0; l < total; ++l) {
dots = 1 + rand() % 6;
/* dices[dots-1]++; */ /*建议老师,这一句就可省下面的switch语句*/
switch (dots) {
case 1:
dices[0]++;
break;
case 2:
dices[1]++;
break;
case 3:
dices[2]++;
break;
case 4:
dices[3]++;
break;
case 5:
dices[4]++;
break;
case 6:
dices[5]++;
break;
default:
;
}
}
for (i = 0; i < 6; ++i)
printf("出现%d点的次数为 %d, 所占比例为 %g%%\n", i+1, dices[i], double(dices[i])/total*100.0);
return 0;
}
运行:
出现1点的次数为 166492, 所占比例为 16.6492%
出现2点的次数为 166509, 所占比例为 16.6509%
出现3点的次数为 166553, 所占比例为 16.6553%
出现4点的次数为 166176, 所占比例为 16.6176%
出现5点的次数为 166825, 所占比例为 16.6825%
出现6点的次数为 167445, 所占比例为 16.7445%
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |