同学去百度面试 面试官问了一个概率问题 dota两人开黑 随机到一边的概率 一开始我想两个人 先拿出一个 去近卫的概率是一半 另一个人去近卫的概率也是一半,这样两人都在近卫的概率是14 同理都去天灾也是1/4 所以结果是1/2 但后来同学又说一个人先随机 随机到近卫的概率是1/2 另一个人再随机 随到近卫的概率就是4/9 相乘就是2/9 那么最后结果肯定不一样了 求解答

解决方案 »

  1.   

    刚刚查的google,才了解,落伍了4/9是这样的,5v5,一个去了A队,剩下9个位置,4个是A,5个是B
    所以,两个都去A的概率是5/10×4/9,都去一边的概率是5/10×4/9×2
      

  2.   

    你原来的想法代码类似下面,结果甚至可能是10v0
        boolean[] team = new boolean[10];
        Random rand = new Random();
        for (int i = 0; i < team.length; i++) {
          team[i] = rand.nextBoolean();
        }
        int count = 0;
        for (boolean b : team) {
          if (b) {
            count++;
          }
        }
        System.out.println(count);而实际随机分配的结果的代码类似
        boolean[] team = new boolean[10];
        Random rand = new Random();
        int a = team.length / 2;
        for (int i = 0; i < team.length && a > 0; i++) {
          int x = rand.nextInt(team.length - i);
          if (x < a) {
            team[i] = true;
            a--;
          }
        }
        int count = 0;
        for (boolean b : team) {
          if (b) {
            count++;
          }
        }
        System.out.println(count);
    恒定5v5
      

  3.   

    找IceFrog要SP指令的实现代码。
      

  4.   

               exp +1
      

  5.   

    这不是纯数学问题么。为嘛大公司都爱考概率论?
    这个随机应该是从10个人随机抽取5个做近卫,另外5个做天灾
    2*(C2 2)*(C3 8)/(C5 10)=4/9
      

  6.   


    百度问dota 楼主你应该问什么是dota
      

  7.   

    啊,不懂dota还进不了百度啊,看来得学习dota了。
      

  8.   

    才不信呢 你同学不会把VS、掌门人当baidu了吧
      

  9.   

    看来我是没希望进百度了,DODA什么的都不懂~
      

  10.   

    百度还挺喜欢用dota出题目,以前我也做过一个dota的:
    http://topic.csdn.net/u/20091105/21/17f7bb24-b5c6-4ef5-82b8-d2ad76854482.html
      

  11.   

    C(1,2) * C(3,8)/C(5,10) = 4/9 高中概率题
      

  12.   

    学习了..这些问题除了需要了解数学的概率知识,而且还要知道Dota游戏的分队业务..对于不知道Dota游戏的人就悲剧了.
      

  13.   

    百度编程的大拿喜欢打dota吧~~
      

  14.   

    boolean[] team = new boolean[10];
        Random rand = new Random();
        int a = team.length / 2;
        for (int i = 0; i < team.length && a > 0; i++) {
          int x = rand.nextInt(team.length - i);
          if (x < a) {
            team[i] = true;
            a--;
          }
        }
        int count = 0;
        for (boolean b : team) {
          if (b) {
            count++;
          }
        }
        System.out.println(count);
      

  15.   

    First Blood 
    Double Kills 
    Triple Kills 
    Ultrakill
    Rampage
      

  16.   

    不是1/2嘛?
    一共就4种情况:
    A和B都在天灾
    A和B都在近卫
    A在天灾B在近卫
    A在近卫B在天灾
    每种情况的概率都是1/4,
    在同一边的情况就1/4+1/4 = 1/2 
      

  17.   

    1/2的应该也对。
    试想即使近卫有了四个人,天灾一个没有,这时再来一个人,他去天灾和去近卫的概率仍为1/2。除非近卫满了,那么去天灾概率1。
    4/9的就不是纯随机了,而是组合问题,这种方法会尽量保证两边人数平均,不会一边五个一边一个都没有。
    DOTA用的是哪种,不太清楚。要是通常是两边人数差不多,那就是第二种,如果有时出现五个对零个的(概率1/32),那就应该是第一种。
      

  18.   

    弱弱地问下,9个球往9个盒子里放,其中四个盒子是A组,5个是B组,有一个特殊球落到A组盒子的概率是4/9
    这么考虑可以不
      

  19.   

    学习学习,要是NB人士书呆子不完dota可怎么是好
      

  20.   

    4/9是对的
    为什么1/2是错的呢?
    得到1/2这个答案的原因是:
    假设两人都在天灾,那么a在天灾的概率是1/2,b在天灾的概率是1/2,相乘得1/4.
    两人在近卫的时候同理也是1/4.相加得到1/2.
    可是这个分析是有问题的,就单个a来说在天灾的概率是1/2,单个b来说在天灾的概率也是1/2.
    不过这两个事件不是相互独立的事件,所以不能用1/2*1/2.
      

  21.   

    是这样吧 (C(1,2) * C(2,5))/C(2,10) = 4/9
      

  22.   

    不太懂~要好好学习喽~dota……
      

  23.   

    高中知识啊 
    (C(2,5)+C(2,5))/C(4,10)
      

  24.   

    先随机一个坑,再随机一个坑?问题是怎么算他们第几次被随机到的?
    还是像抽奖一样,在都不揭晓的时候,大家抽到奖的概率是一样的。好像dota里得到的界面结果都是同时的吧。不是很懂概率。