黑马程序员技术交流社区

标题: 大家做做看!!!! [打印本页]

作者: 杨立考    时间: 2013-1-13 10:49
标题: 大家做做看!!!!
Q:现有两个骰子,一共有多少种方法可以掷出骰子点数之和是7?有多少种方法可以掷出点数之和小于等于6?(写出必要的计算过程)
作者: 林嘉健    时间: 2013-1-13 12:12
这不难吧,跟99乘法表原理差不多。

我现去试试
作者: 林嘉健    时间: 2013-1-13 12:20
本帖最后由 林嘉健 于 2013-1-13 14:08 编辑
  1. static void Main(string[] args)
  2.         {
  3.             int moreThanSeven = 0;//可以掷出骰子点数之和是7的次数
  4.             int lessThanSix = 0;//可以掷出点数之和小于等于6的次数
  5.             for (int i = 1; i <= 6; i++)
  6.             {
  7.                 for (int j = 1; j <= 6; j++)
  8.                 {
  9.                     int temp = i + j;
  10.                     if (temp == 7)
  11.                     {
  12.                         moreThanSeven++;
  13.                     }
  14.                     else if (temp <= 6)
  15.                     {
  16.                         lessThanSix++;
  17.                     }
  18.                 }
  19.             }
  20.             Console.WriteLine("掷出骰子点数之和是7的次数为:" + moreThanSeven);
  21.             Console.WriteLine("可以掷出点数之和小于等于6的次数为: " +  lessThanSix);
  22.             Console.ReadKey();
  23.         }
复制代码
类似这样就可以得出了吧~
作者: 张森    时间: 2013-1-13 12:26
  1. public class Demo {
  2.         public static void main(String[] args) {
  3.                 int[] a = new int[]{1,2,3,4,5,6};
  4.                 int[] b = new int[]{1,2,3,4,5,6};
  5.                 int index = 0;
  6.                 for(int i=0;i<6;i++){
  7.                         for(int j=0;j<6;j++){
  8.                                 if(a[i]+b[j]==7){
  9.                                         System.out.println("a["+a[i]+"]-------------b["+b[j]+"]");
  10.                                         index++;
  11.                                 }
  12.                         }
  13.                 }
  14.                 System.out.println("掷出骰子点数之和是7一个有"+index+"种方式");
  15.         }
  16. }
复制代码
你要计算小于6  跟这个差不多 改下if即可

作者: jonn    时间: 2013-1-13 13:32

我来尝试一下,我的思路如下
  LZ玩概率论了,两个骰子 出现情况
(1,1)(1, 2)  (1, 3)(1, 4)(1, 5)(1, 6)
(2, 1) (2, 2)(2, 3)  (2, 4)(2, 5)(2, 6)
(3, 1) (3, 2)(3, 3)  (3, 4)(3,5) (3,6)
  .....
依次推理
共有6*6 种 ,那么点数之和为7 有 (1,6) (2,5) (3,4) (4,3) (6,1)(5,2) 六种情况
出现了概率 p=6/36
  1. class Dice
  2. {
  3.     static int[][] dice={  {1,1},{1,2},{1,3},{1,4},{1,5},{1,6},
  4.                            {2,1},{2,2},{2,3},{2,4},{2,5},{2,6},
  5.                            {3,1},{3,2},{3,3},{3,4},{3,5},{3,6},
  6.                            {4,1},{4,2},{4,3},{4,4},{4,5},{4,6},
  7.                            {5,1},{5,2},{5,3},{5,4},{5,5},{5,6},
  8.                            {6,1},{6,2},{6,3},{6,4},{6,5},{6,6},                                                   
  9.                         };                                 //
  10.    protected int sum(){
  11.       int num=0; // 注意局部变量必须要初始化
  12.       for(int i=0;i<(dice.length/dice[0].length);i++)
  13.                 {       
  14.                         for(int n=0;n<2;n++)
  15.                         {
  16.                                 if(dice[i][0]!=dice[i][1]&dice[i][0]+dice[i][1]==7) //判断 二维数组每个首地址的一维数组是否相等 ,点数和为7
  17.                                  num++;  //出现的次数进行累加
  18.                         }
  19.                 }
  20.            return num;
  21.       }

  22.   protected void count(){
  23.        System.out.println(sum()+"/"+dice.length);
  24.        }
  25.   }

  26. public class Test{
  27. public static void main(String[] args){
  28. new Dice().count();
  29.     }
  30. }
复制代码
点子小于等于6按照上面思路添加一个方法,用参数n传递过去就ok了 n赋值1~6之间即可




作者: jonn    时间: 2013-1-13 13:35
林嘉健 发表于 2013-1-13 12:20
类似这样就可以得出了吧~

条件里要排除 两个骰子都为相同的点数....
作者: 林嘉健    时间: 2013-1-13 14:10
赵文 发表于 2013-1-13 13:35
条件里要排除 两个骰子都为相同的点数....

哪里错了吗?
作者: jonn    时间: 2013-1-13 14:15
条件循环里面要出排除 点数为相同的 3 3 ,2 2 ,1 1....这是不成立了,这涉及到概率论问题... 自己好好琢磨....




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2