📄 d6r10.cpp
字号:
# include <iostream.h>
# include <math.h>
# include <iomanip.h>
static int irbit1(int& iseed)
{
int ib1,ib3,ib5,ib14,newbit,temp;
ib1 = 1;
ib3 = 4;
ib5 = 16;
ib14 = 8192;
newbit = -((iseed & ib14 )!=0);
if ((iseed & ib5) != 0)
newbit =~ newbit;
if ((iseed & ib3) != 0)
newbit =~ newbit;
if ((iseed & ib1) != 0)
newbit =~ newbit;
if (iseed > int(pow(2 ,14)))
iseed = iseed - int(pow(2 ,14));
iseed = 2 * iseed;
if (newbit)
{
temp=1;
iseed = (iseed | ib1);
}
else
{
temp=0;
iseed = (iseed & (~ib1));
}
return temp;
}
void main()
{
//program d6r10
//driver for routine irbit1
//calculate distribution of runs of zeros
int nbin,ntries,iseed,i,j,iflg,ipts,n;
double delay[16];
nbin = 15;
ntries = 10000;
iseed = 12345;
for (i = 1; i<=nbin; i++)
{
delay[i] = 0.0;
}
ipts = 0;
for (i = 1; i<=ntries; i++)
{
if (irbit1(iseed) == 1)
{
ipts = ipts + 1;
iflg = 0;
for (j = 1; j<=nbin; j++)
{
if ((irbit1(iseed) == 1) && (iflg == 0))
{
iflg = 1;
delay[j] = delay[j] + 1.0;
}
}
}
}
cout<<"Distribution of runs of n zeros"<<endl;
cout<<" n probability expected"<<endl;
cout<<setprecision(6)<<setiosflags(ios::fixed);
for (n = 1 ; n<=nbin; n++)
{
cout<<setw(5)<<n - 1;
cout<<setw(15)<<delay[n] / double(ipts);
cout<<setw(15)<<(1.0/ pow(2,n))<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -