java 练习3 掷骰子

题例

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

运行结果

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

在这里插入图片描述

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值