题例
编写一个模拟同时掷两个骰子的程序。要用Math. random()模拟产生第一个最于,然后再产生第二个骰子,将两个结果相加,相加的和等于7的可能性最大,等于2和12的可能性最小。图2-2表示了出现36种情况的组合。程序模拟掷3600次骰子,判断求和结果是否合理,共有6种情况的和是7,故在3600次掷骰子的结果中应当有1/6的可能性是7。
应用程序实现
import java.math.BigDecimal;
public class shaizi
{
public void fun1(double f) //创建保留三位小数的方法
{
BigDecimal bg = new BigDecimal(f);
double f1 = bg.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(f1);
}
public static void main(String args[])
{
int a,b,c,i;
double p=0.00;
int a1[]=new int[11]; //总共会出现2~12共11种组合情况
//int b1[]= {0,0,0,0,0,0};
i=1;
while(i<=3600) //掷3600次骰子
{
a=(int)(Math.random()*6);//掷骰子a
b=(int)(Math.random()*6);//掷骰子b
c=a+b;
switch(c) //统计各种情况出现的次数
{ //随机数0-5表示骰子1-6点,
//所以case 0-case10表示和为2-12的情况
case 0:
a1[0]++;
break;
case 1:
a1[1]++;
break;
case 2:
a1[2]++;
break;
case 3:
a1[3]++;
break;
case 4:
a1[4]++;
break;
case 5:
a1[5]++;
break;
case 6:
a1[6]++;
break;
case 7:
a1[7]++;
break;
case 8:
a1[8]++;
break;
case 9:
a1[9]++;
break;
case 10:
a1[10]++;
break;
}
i++;
}
p=a1[5]/3600.00;
shaizi dt = new shaizi();
System.out.println
("在3600次实验中,两骰子点数之和为7出现"
+a1[5]
+"次;"
+'\n'
+"频率为");
dt.fun1(p); //调用方法fun1对p取三位小数并输出
System.out.println("注:1/6=0.17");
}
}
运行结果
第一次测试
第二次测试
第三次测试
本人才疏学浅,如有问题,敬请指正