?? 6_59.cpp
字號:
#include<iostream.h>
#include<iomanip.h>
#include<time.h>
const unsigned long maxshort=65536L;
const unsigned long multiplier=1194211693L;
const unsigned long adder=12345;
class RandomNumber
{
private:
unsigned long randSeed; //當前種子
public:
RandomNumber(unsigned long s=0); //構(gòu)造函數(shù)
unsigned short Random(unsigned long n); //產(chǎn)生0到n-1之間的隨機整數(shù)
double fRandom(void); //產(chǎn)生[0,1]的隨機實數(shù)
};
RandomNumber::RandomNumber(unsigned long s)
{
if (s==0)
randSeed=time(0); //用系統(tǒng)時間產(chǎn)生種子
else
randSeed=s; //用戶提供種子
}
unsigned short RandomNumber::Random(unsigned long n)
{
randSeed=multiplier*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=1;i<=n;i++)
{
double x=dart.fRandom();
double y=dart.fRandom();
if((x*x+y*y)<1) k++;
}
return 4*k/double(n);
}
void main(void)
{
unsigned long n;
cout<<"n=";
cin>>n;
cout<<Darts(n)<<endl;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -