/**
- 这是一个Java程序,生成随机数并统计每个数出现的概率。
- 首先生成1000个1-6之间的随机整数,然后统计每个数出现的次数,计算概率并输出结果。
- 接着使用Java的Math库生成1000个随机数,同样统计每个数出现的次数,计算概率并输出结果。
- 最后比较两种方法得到的概率分布是否相同。 */
RandomNumberGenerator.java 代码如下:
import java.util.Random;
public class RandomNumberGenerator {
public static void main(String[] args) {
// 生成1000个1-6的随机整数
int[] counts1 = new int[6];
Random random1 = new Random();
for (int i = 0; i < 1000; i++) {
int num = random1.nextInt(6) + 1;
counts1[num - 1]++;
}
// 计算每个数出现的概率并输出结果
System.out.println("使用Random库生成随机数:");
for (int j = 0; j < counts1.length; j++) {
double probability1 = (double) counts1[j] / 1000;
System.out.printf("%d的概率为:%.2f%%\n", j + 1, probability1 * 100);
}
// 生成1000个随机数
int[] counts2 = new int[6];
for (int i = 0; i < 1000; i++) {
double num = Math.random() * 6 + 1;
counts2[(int) num - 1]++;
}
// 计算每个数出现的概率并输出结果
System.out.println("\n使用Math库生成随机数:");
for (int j = 0; j < counts2.length; j++) {
double probability2 = (double) counts2[j] / 1000;
System.out.printf("%d的概率为:%.2f%%\n", j + 1, probability2 * 100);
}
// 比较两种方法的概率分布是否相同
System.out.println("\n两种方法生成的概率分布是否相同:");
for (int i = 0; i < counts1.length; i++) {
if (counts1[i] == counts2[i]) {
System.out.printf("%d的概率分布相同\n", i + 1);
} else {
System.out.printf("%d的概率分布不同\n", i + 1);
}
}
}
}
运行结果如下: