当前位置 博文首页 > 爱新觉罗?炒饭的博客:随机数和数值随机算法
在计算机上无法产生真正的随机数,因此随机化算法中使用的随机数都是一定程度上随机的,即为伪随机数。
通过线性同余法产生伪随机数:
随机序列a0,a1,a2…an 满足
随机投点计算pi值
double Darts(int n) //n表示投掷的次数
{
static RandomNumber dart; //随机数类
int k++;
for(int i=1;i<=n;i++)
{
//fRandom()返回[0,1)之间的一个随机数
double x=dart.fRandom();
double y=dart.frandom();
if(x*x+y*y<=1)
k++;
}
return 4*k/double(n); //上面只是计算四分之一,所以要乘以4
}
计算定积分
double Darts(int n) //n表示投掷的次数
{
static RandomNumber dart; //随机数类
int k++;
for(int i=1;i<=n;i++)
{
//fRandom()返回[0,1)之间的一个随机数
double x=dart.fRandom();
double y=dart.frandom();
if(y<=f(x))
k++;
}
return k/double(n); //上面只是计算四分之一,所以要乘以4
}
解线性方程组
看书或者ppt