美文网首页
数学公式题

数学公式题

作者: young_dreamer | 来源:发表于2016-07-02 23:16 被阅读65次

    题目描述

    一个盒子里面放k种颜色的球,第i种颜色的球有Ai个,每次有放回的取出一个球并得到该球的颜色。问在取出过程中得到所有颜色之前需要取多少次(K已知,Ai已知)

    分析:举例有黑白两种颜色的球,分别是5个和10个,每次概率相等的取球。计算拿到2种颜色时取球次数的期望
    可以取2~无穷次,因为每次是等概率取。(该例结果为3.500000)
    该题就是算累加和,需要将数学累加公式实现一遍并且需要注意精度问题,test case 有三分之一没过,实在不懂为啥,又不能再次提交,烦躁呀!

    import java.util.Scanner;
    
    class Main{
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            while (in.hasNext()) {
    
                int k = Integer.valueOf(in.next());
                int[] balls = new int[k];
    
                for (int i = 0; i < balls.length; i++) {
                    balls[i] = Integer.valueOf(in.next());
                }
                double[] eachBallProbability = new double[k];
                double result = 0;
                int sumBalls = 0;
                for (int i = 0; i < balls.length; i++) {
                    sumBalls += balls[i];
                }
                
                for (int i = 0; i < eachBallProbability.length; i++) {
                    eachBallProbability[i] =(double) balls[i] / sumBalls;
                }
                for (int i = 0; i < eachBallProbability.length; i++) {
                    result += getExpected(k, eachBallProbability[i]);
                }
                    System.out.println(result);
            }
        }
        // getExpected 用于计算每种颜色期望的公式,题解就是返回K种期望的和,数学推导公式不理解就去好好复习下高中数列
        public static double getExpected(int k, double p){
            double result = 0;
            
            result = k * Math.pow(1-p, k-1) + Math.pow(1-p, k)/p;
            
            System.out.println("result:" + result);
            
            return result;
        }
    }
    

    相关文章

      网友评论

          本文标题:数学公式题

          本文链接:https://www.haomeiwen.com/subject/ykgqjttx.html