帮忙解释一下下面的C++代码

来源:百度知道 编辑:UC知道 时间:2024/09/23 05:20:34
#include<iostream>
#include<stdlib.h>
using namespace std;
int heads()
{
return rand()<RAND_MAX/2;
}
int main(int argc,char *argv[])
{
int i,j,cnt;
int N=atoi(argv[1]),M=atoi(argv[2]);
int *f=new int[N+1];
for(j=0;j<=N;j++)
f[j]=0;
for(i=0;i<M;i++,f[cnt]++) //问题就在这里的f[cnt]++;
//到底是什么意思?
for(cnt=0,j=0;j<=N;j++)
if(heads())
cnt++;
for(j=0;j<=N;j++)
{
if(f[j]==0)
cout<<".";
for(i=0;i<f[j];i+=10)
cout<<"*";
cout<<endl;
}
}

这是关于概率分布的编程
关键就是f[cnt],其它没有什么内容好讲的
你把程序多运行几遍,M,N取不同的值
数一数 * 的个数
你一定会明白的
建议取以下几组 (M,N)
10, 1
1000, 10

不知道你这段代码要干啥。

干啥

f[cnt]++;
就是f[cnt]里面的内容+1
还有就是参数一样的话,这个程序输出的图形是一样的,无论运行多少次,根本不随机。
电脑的随机数实际是一个循环的数列,尽管这个数列很长,但还是循环的
cnt定义的时候应该初始化,否则可能出错

f[cnt]++ 是指里面内容加1
没有这个,根本就不会有*号出现.
这是用来判断各个cnt的值出现了几次