当前位置 博文首页 > 爱新觉罗?炒饭的博客:随机数和数值随机算法

    爱新觉罗?炒饭的博客:随机数和数值随机算法

    作者:[db:作者] 时间:2021-06-21 09:37

    在计算机上无法产生真正的随机数,因此随机化算法中使用的随机数都是一定程度上随机的,即为伪随机数
    通过线性同余法产生伪随机数:
    随机序列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