📄 随即数.cpp
字号:
// 随即数.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<time.h>
#include<iostream.h>
//随机数类
const unsigned long maxshort=65536L;
const unsigned long multiplier=1194211693L;
const unsigned long adder=12345L;
class RandomNumber
{private:
//当前种子
unsigned long randSeed;
public:
//构造函数,缺省值0表示由系统自动产生种子
RandomNumber(unsigned long s=0);
//产生0:n-1之间的随机整数
unsigned short Random(unsigned long n);
//产生[0,1)之间的随机实数
double fRandom(void);
};
//产生种子
RandomNumber::RandomNumber(unsigned long s)
{if(s==0)
randSeed=time(0);//用系统时间产生种子
else
randSeed=s;//由用户提供种子
}
//产生0:n-1之间的随机整数
unsigned short RandomNumber::Random(unsigned long n)
{randSeed=multiplier*randSeed+adder;
return(unsigned short)((randSeed>>16)%n);
}
//产生[0,1)之间的随机实数
double RandomNumber::fRandom(void)
{
return Random(maxshort)/double(maxshort);
}
double f(double x)
{
double s=x*x;
return s;}
double Darts(int n)
{//用随即投点方法计算pai的值
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);
}
double Darts1(int n)
{//用随机投点法计算定积分
static RandomNumber dart;
int k=0;
for(int i=1;i<=n;i++)
{double x=dart.fRandom();
double y=dart.fRandom();
if(y<=f(x)) k++;
}
return k/double(n);
}
main()
{int n;
double a;
for(int i=0;i<=3;i++)
{cin>>n;
a=Darts1(n);
cout<<"a="<<a<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -