java中有一个随机函数 Math.random()可以实现生成[0,1)之间的一个数,且生成每一个数之间的概率可以视为相等。
int testTimes = 20000000;int count = 0;for (int i = 0; i < testTimes; i++) {if (Math.random()<0.75){count++;}}System.out.println((double)count/(double)testTimes);//0.7500332
改造成:[0,N)之间,生成每一个数之间的概率为相等;
int count = 0;int testTimes = 20000000;for (int i = 0; i < testTimes; i++) {if (Math.random()*8<5){count++;}}System.out.println((double)count/(double)testTimes);//0.6250673System.out.println((double)5/(double)8);//0.625
e
// 取整处理 int K = 9; int testTimes = 20000000; int[] counts = new int[K]; for (int i = 0; i < testTimes; i++) { int ans = (int)(Math.random()*K); counts[ans]++; } for (int i = 0; i < K; i++) { System.out.println(i+"这个数,出现了"+counts[i]+"次"); }[0,x]出现的概率为x,(x<1),如何实现[0,x]出现的概率为x^2
