实现等概率发生器之前,需要了解一下Math.random()函数。
Math.random()函数 等概率 返回一个[0,1)区间左闭右开的数(大于等于0且小于1的随机double类型的数)。
public static void main(String[] args) {
int testTimes = 10000000;
int count = 0;
for (int i = 0; i < testTimes; i++) {
if (Math.random() < 0.75) {
count++;
}
}
System.out.println((double) count / (double) testTimes);
//结果为 0.7499869 和 0.75 相等,所以说Math.random()函数是等概率的
int[] counts = new int[8];
int num = 8;
for (int i = 0; i < testTimes; i++) {
int ans = (int) (Math.random() * num ); // 返回[0,num -1]上的随机数
counts[ans]++;
}
for (int i = 0; i < counts.length; i++) {
System.out.println(i + "这个数,出现了 " + counts[i] + " 次");
}
//随机数出现次数是差不多,也就说是相同的概率
//0这个数,出现了 1110052 次