import java.util.*;
class Petersburg {
public static void main(String[] argv){
Random rand = new Random();
Scanner stdIn = new Scanner(System.in);
double a1 = 2;
int a2 = 0;
System.out.println("輸入玩幾次");
int n = stdIn.nextInt();
System.out.println("輸入樣本數");
int n1 = stdIn.nextInt();
// int n = 64;
double win = 0;
double sum1 = 0;
double sum2 = 0;
double max = 0;
double min = 0;
for (int k=1; k<=n1; k++){
sum1 = 0;
for (int i=1; i<=n; i++){
double coin = rand.nextDouble();
/*
System.out.println("第" + i + "次玩");
System.out.println("隨機數" + coin);
*/
a1 = 2;
a2 = 0;
for (int j=1; a1>=coin; j++){
a1 = Math.pow(2,-j);
//System.out.println(a1);
a2 = j;
}
win = Math.pow(2,a2-1);
sum1 = sum1 + win;
/*
System.out.println("第" + a2 + "回才丟出來");
System.out.println("機率" + Math.pow(2,-a2));
System.out.println("贏了" + win + "元");
System.out.println("累計贏了" + sum1);
System.out.println("===========================");
*/
}
//System.out.print("玩" +n + "次共贏了" + sum1 + "元 ");
//System.out.println("平均每回獲利" + sum1 + "/" + n + "=" + (sum1/n));
//System.out.println("===========================");
//System.out.println("===========================");
sum2 = sum2 + sum1;
if (k == 1){
min = sum1;
max = sum1;
}
if (sum1 < min) min = sum1;
if (sum1 > max) max = sum1;
}
System.out.println("==================================");
System.out.println("平均每樣本獲利" + sum2 + "/" + n1 + "=" + (sum2/n1));
System.out.println("平均每次獲利" + (sum2/n1) + "/" + n + "=" + (sum2/n1/n));
System.out.print("max" + max + " ");
System.out.println(max + "/" + n + "=" + (max/n));
System.out.print("min" + min + " ");
System.out.println(min + "/" + n + "=" + (min/n));
System.out.println("max/min = " + (max/min));
}
}
沒有留言:
張貼留言