📄 fac7_2_2.java
字号:
//本程序取自王晓东编著“算法分析与设计”第 245 页,例7_2_2
//用随机投点法计算定积分
import java.lang.System;
class Random
{
private long seed;//当前种子
private final static long multiplier=0x5DEECE66DL;
private final static long adder=0xBL;
private final static long mask=(1L<<48)-1;
//构造方法,自动产生种子
public Random(){
this.seed=System.currentTimeMillis();}
//构造方法,缺省值0表示由系统自动产生种子
public Random(long seed)
{
if(seed==0)this.seed=System.currentTimeMillis();
else this.seed=seed;
}
//产生[0,n-1]之间的随机整数
public int random(int n)
{
if(n<=0)
throw new IllegalArgumentException(" n must be positive");
seed=(seed*multiplier+adder) & mask;
return ((int)(seed>>>17)%n);
}
//产生[0,1]之间的随机实数
public double fRandom()
{
return random(Integer.MAX_VALUE)/(double)(Integer.MAX_VALUE);
}
}
public class Fac7_2_2{
public static double darts1(int n)
{//用随机投点法计算定积分
Random dart=new Random();
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;
}
public static double f(double x)
{//定义函数f(x)
return(Math.sin(x));
}
/** 应用程序 */
public static void main(String args[])
{
int i=100000;
System.out.print("sin(x)积分近似值 ");
System.out.println(darts1(i));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -