实现Java正态分布图
1. 整体流程
下面是实现Java正态分布图的整体流程:
步骤 | 描述 |
---|---|
1. 创建一个随机数生成器 | 用于生成服从正态分布的随机数 |
2. 创建一个数据集合 | 用于存储生成的随机数 |
3. 生成随机数并添加到数据集合中 | 通过循环生成一定数量的随机数,并添加到数据集合中 |
4. 绘制正态分布图 | 使用柱状图或其他绘图库绘制生成的随机数的正态分布图 |
2. 代码实现步骤
2.1 创建随机数生成器
import java.util.Random;
public class RandomNumberGenerator {
private Random random;
public RandomNumberGenerator() {
random = new Random();
}
public double generateRandomNumber() {
return random.nextGaussian();
}
}
上述代码创建了一个RandomNumberGenerator类,其中使用Java的Random类来生成服从正态分布的随机数。generateRandomNumber方法返回一个服从正态分布的随机数。
2.2 创建数据集合
import java.util.ArrayList;
import java.util.List;
public class DataSet {
private List<Double> data;
public DataSet() {
data = new ArrayList<>();
}
public void addData(double number) {
data.add(number);
}
public List<Double> getData() {
return data;
}
}
上述代码创建了一个DataSet类,用于存储生成的随机数。addData方法用于将随机数添加到数据集合中,getData方法用于获取数据集合。
2.3 生成随机数并添加到数据集合中
public class Main {
public static void main(String[] args) {
RandomNumberGenerator generator = new RandomNumberGenerator();
DataSet dataSet = new DataSet();
int numberOfRandomNumbers = 1000; // 随机数数量
for (int i = 0; i < numberOfRandomNumbers; i++) {
double randomNumber = generator.generateRandomNumber();
dataSet.addData(randomNumber);
}
}
}
上述代码创建了一个Main类,用于生成随机数并添加到数据集合中。numberOfRandomNumbers变量指定了要生成的随机数的数量。
2.4 绘制正态分布图
在这一步中,你可以使用柱状图或其他绘图库来绘制生成的随机数的正态分布图。下面是一个使用JFreeChart库绘制柱状图的示例代码:
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.statistics.HistogramDataset;
import javax.swing.*;
public class Chart {
public static void main(String[] args) {
DataSet dataSet = new DataSet();
// 生成随机数并添加到数据集合中,代码同步第2.3步
RandomNumberGenerator generator = new RandomNumberGenerator();
int numberOfRandomNumbers = 1000; // 随机数数量
for (int i = 0; i < numberOfRandomNumbers; i++) {
double randomNumber = generator.generateRandomNumber();
dataSet.addData(randomNumber);
}
// 创建直方图数据集
HistogramDataset histogramDataset = new HistogramDataset();
double[] values = dataSet.getData().stream().mapToDouble(Double::doubleValue).toArray();
histogramDataset.addSeries("Random Numbers", values, 10); // 设置分组数量为10
// 创建直方图
JFreeChart chart = ChartFactory.createHistogram(
"Normal Distribution", // 图表标题
"Value", // x轴标题
"Frequency", // y轴标题
histogramDataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向
true, // 是否显示图例
true, // 是否生成工具提示
false // 是否生成URL链接
);
// 创建图表面板并显示
ChartPanel chartPanel = new ChartPanel(chart);
JFrame frame = new JFrame("Normal Distribution");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
上述代码使用JFreeChart库创建了一个直方图,并将生成的随机数的数据集合添加到图表中。你可以根