本帖最后由 王莹 于 2012-6-22 10:56 编辑
这是以前我做过的一道JAVA程序题,最近翻出来了,想请教大家有没有更好的解法
题目:编写一个模拟同时掷2个骰子的程序。要用Math.random()模拟产生第1个骰子,然后再产生第2个骰子,将2个结果相加,相加的和等于7的可能性最大,等于2和12的可能性最小,共有36种可能的情况,程序模拟掷3600次骰子,判断求和结果是否合理。(由于共有6种情况的和是7,故在3600次掷骰子的过程中应有1/6的可能性是7)- public class Possible
-
- {
- public static void main(String[] args)
- {
- int a,b,sum,num2=0,num7=0,num12=0;
- double pro2=0,pro7=0,pro12=0; //pro2,pro7,pro12是得到的概率值
- for(int i=0;i<3600;i++)
- {
- a=(int)(Math.random()*6+1); //定义两个变量a、b,分别接收随机生成的值,随机值在1~6之间
- b=(int)(Math.random()*6+1);
- sum=a+b;
- switch(sum)
- {
- //和有11种情况
- case 2: num2++;break;//对和是2的结果进行计数
- case 3:break;
- case 4:break;
- case 5:break;
- case 6:break;
- case 7:num7++;break;
- case 8:break;
- case 9:break;
- case 10:break;
- case 11:break;
- case 12: num12++;break;
- default:
- System.out.println("the number is wrong!"); break;
- }
- pro2=num2/3600.0;//得出和为2的次数的概率
- pro7=num7/3600.0;
- pro12=num12/3600.0;
- }
- System.out.println("相加等于7的概率是:"+pro7);
- System.out.println("相加等于2的概率是:"+pro2);
- System.out.println("相加等于12的概率是:"+pro12);
- }
- }
复制代码 |