作业帮 > 综合 > 作业

使用循环语句和随机函数rand()模拟抛1000000次骰子,统计出现1-6点的次数及所占比例,最后输出.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/28 01:16:25
使用循环语句和随机函数rand()模拟抛1000000次骰子,统计出现1-6点的次数及所占比例,最后输出.
用c++
#include <iostream>
#define M 1000000
int ac[7]={0};
using namespace std;
int main()
{
 for(int i=0; i<M; i++)
 {
  ac[rand()%6+1] +=1;
 }
 cout<<"Num\tCount\tPercent"<<endl;
 for(int i=1;i<7; i++)
  cout<<i<<":\t"<<ac[i]<<"\t"<<ac[i]*1.0/M<<endl;
 return 0;  
}
再问: 调试行了。
int ac[7]={0};
ac[rand()%6+1] +=1;
请问这两句的作用是?我还不是太明白是怎样得到1-6点的次数的?还有,为什么数组的长度是7而不是6?
再答: int ac[7]={0}; // 声明数组大小,6也成,不过声明为7个后可以直接用下标1-6,否则只能是0-5,需要映射一下
ac[rand()%6+1] +=1; // rand()函数返回一个随机数, 模6后得到0-5这六个数之间的一个数,概率基本相等,然后要变换到1-6,所以再加上1就刚好了