java 练习3 掷骰子

版权声明:此文章为作者筱睿_原创文章,转载请附上博客链接 https://blog.csdn.net/qq_43756486/article/details/88326085

题例

编写一个模拟同时掷两个骰子的程序。要用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");
	}
}

运行结果

第一次测试
在这里插入图片描述
第二次测试
在这里插入图片描述
第三次测试

在这里插入图片描述

本人才疏学浅,如有问题,敬请指正

猜你喜欢

转载自blog.csdn.net/qq_43756486/article/details/88326085