教育改变生活

标题: 拼多多面试真题-骰子期望 [打印本页]

作者: 一秉    时间: 2020-7-3 20:36
标题: 拼多多面试真题-骰子期望
题目描述
扔n个骰子,第i个骰子有可能投掷出Xi种等概率的不同的结果,数字从1到Xi。所有骰子的结果的最大值将作为最终结果。求最终结果的期望。
实现思路:
总次数就是x1*x2*……*xn
我们将其排序,假设x1……xn从小到大排列,从最大的开始看起,如果要让最大值=xn ,则让第n个色子的取值为xn,其他色子任取,情况有x1*x2*……xn-1种。然后我们第n个色子不能取xn了,把它减1放回原序列。
依次进行以上步骤,直到序列全部为1.
代码实现:
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.Scanner;

public class Q4_2020 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int[] X = new int[num];
        for (int i=0; i<num; i++){
            X[i] = sc.nextInt();
        }
        DecimalFormat decimalFormat=new DecimalFormat(".00");
        String p=decimalFormat.format(qiwang(X));

        System.out.println(p);
    }
    public static double qiwang(int[] x){
        int len = x.length;
        double n=1;
        for (int value : x) {
            n = n*value;
        }
        Arrays.sort(x);
        double qiwang = 0;
        while (x[len-1]!=1){
            double a = 1;;
            for (int i = 0; i<len-1;i++){
                a = a*x[i];
            }
            qiwang += a*x[len-1];
            x[len-1] -=1;
            Arrays.sort(x);
        }
        qiwang +=1;
        return qiwang/n;
    }


}





欢迎光临 教育改变生活 (http://bbs.goldoar.com/) Powered by Discuz! X3.2