A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨立考 中级黑马   /  2013-1-13 10:49  /  1591 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Q:现有两个骰子,一共有多少种方法可以掷出骰子点数之和是7?有多少种方法可以掷出点数之和小于等于6?(写出必要的计算过程)

7 个回复

倒序浏览
这不难吧,跟99乘法表原理差不多。

我现去试试
回复 使用道具 举报
本帖最后由 林嘉健 于 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.         }
复制代码
类似这样就可以得出了吧~
回复 使用道具 举报
  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即可
回复 使用道具 举报

我来尝试一下,我的思路如下
  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之间即可



回复 使用道具 举报
林嘉健 发表于 2013-1-13 12:20
类似这样就可以得出了吧~

条件里要排除 两个骰子都为相同的点数....
回复 使用道具 举报
赵文 发表于 2013-1-13 13:35
条件里要排除 两个骰子都为相同的点数....

哪里错了吗?
回复 使用道具 举报
jonn 高级黑马 2013-1-13 14:15:21
8#
条件循环里面要出排除 点数为相同的 3 3 ,2 2 ,1 1....这是不成立了,这涉及到概率论问题... 自己好好琢磨....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马