编写代码,根据JAVA的随机采样方法,利用蒙特卡洛仿真方法求圆周率的近似值,要求采用图形用户界面,在界面中可以输入仿真的参数和最后得到近似结果。
时间: 2024-10-18 16:19:55 浏览: 26
蒙特卡洛仿真_蒙特卡洛方法求圆周率_
5星 · 资源好评率100%
在Java中,你可以使用Swing库创建图形用户界面,并结合Math.random()函数生成随机点,通过蒙特卡罗方法估算圆周率。以下是简化的步骤:
首先,需要导入必要的库:
```java
import javax.swing.*;
import java.awt.*;
import java.util.Random;
```
然后,创建一个JFrame作为主窗口并添加一些组件:
```java
public class PiEstimationApp extends JFrame {
private JTextField radiusField;
private JButton calculateButton;
public PiEstimationApp() {
// 创建UI组件
setLayout(new BorderLayout());
setTitle("Monte Carlo Pi Estimation");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel inputPanel = new JPanel();
JLabel radiusLabel = new JLabel("Circle Radius:");
radiusField = new JTextField(5);
inputPanel.add(radiusLabel);
inputPanel.add(radiusField);
JPanel resultPanel = new JPanel();
JLabel piLabel = new JLabel("Estimated Pi: ");
calculateButton = new JButton("Calculate");
calculateButton.addActionListener(e -> estimatePi());
resultPanel.add(piLabel);
add(inputPanel, BorderLayout.NORTH);
add(resultPanel, BorderLayout.CENTER);
}
// 估计圆周率的方法
private void estimatePi() {
double radius = Double.parseDouble(radiusField.getText());
int trials = 100000; // 可调整为输入的参数
Random random = new Random();
int insideCircle = 0;
for (int i = 0; i < trials; i++) {
double x = random.nextDouble();
double y = random.nextDouble();
if (x * x + y * y <= radius * radius) {
insideCircle++;
}
}
double estimatedPi = 4.0 * (double) insideCircle / trials;
piLabel.setText(String.format("%.6f", estimatedPi));
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new PiEstimationApp().setVisible(true);
});
}
}
```
在这个例子中,用户可以在文本框中输入圆的半径,点击“Calculate”按钮后,程序会运行蒙特卡洛算法,计算并显示π的估计值。
阅读全文