📄 用数值积分计算派值.txt
字号:
#include<iostream>
#include<ctime>
#include<cmath>
using namespace std;
const unsigned long maxshort=65536l;
const unsigned long multipilier=1194211693l;
const unsigned long adder=12345l;
class RandomNumber{
private:
unsigned long randSeed;
public:
RandomNumber(unsigned long s=0);
unsigned short Random(unsigned long n);
double fRandom(void);
};
RandomNumber::RandomNumber(unsigned long s)
{
if(s==0)
randSeed=time(0);
else
randSeed;
}
unsigned short RandomNumber::Random(unsigned long n)
{
randSeed=multipilier*randSeed+adder;
return(unsigned short)((randSeed>>16)%n);
}
double RandomNumber::fRandom(void)
{
return Random(maxshort)/double(maxshort);
}
double Darts(int n)
{
static RandomNumber dart;
int k=0;
for(int i=0;i<=n;i++)
{
double x=dart.fRandom();
double y=dart.fRandom();
if(y<=sqrt(1-x*x))k++;
}
return k/double(n);
}
void main()
{
double m=0;
m=Darts(1);
cout<<"派值为:"<<m<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -