计算每种骰子和的概率

    xiaoxiao2021-03-28  37

    题目

    有N个骰子,每次全部掷出,每个骰子面朝上的点数和为Sum,求每种点数和的概率

    分析

    对于每种骰子和,最小情况为每个骰子1点朝上,所以和为N,最大为每个骰子6点朝上,和为6N,总共6*N+1种情况。每个骰子都是独立的,都会有1-6的可能性。所以对于每次投掷,首先对每个骰子点数进行加和,然后对应点数和出现的次数加一。直至每个骰子都已经经历过从点数1到点数6,所有骰子出现的情况全部遍历过。

    public class touzi3 { int arr0[]; int arr1[]; int now[]; int last[]; int tag; public touzi3(int n){ tag = 0; arr0 = new int[6 * n + 1]; arr1 = new int[6 * n + 1]; last = arr0; now = arr1; digui(n); } public void digui(int num){ for(int i = 1; i <= num; i++){ cal(i); } } public void cal(int a){ if(now == arr0){ now = arr1; last = arr0; }else{ now = arr0; last = arr1; } for(int i = 0; i <= 6 * a; i++){ now[i] = 0; } if(a == 1){ for(int i = 1; i <= 6; i++){ now[i]++; } }else{ for(int i = 1; i <= 6; i++){ for(int j = a - 1; j <= 6 * a - 6; j++){ // tag++; // System.out.println(tag + " " + i + " " + j +" "); now[i + j] = now[i + j] + last[j]; } } } } public static void main(String[] args) { // TODO 自动生成的方法存根 //num表示骰子的数 int num = 2; touzi3 t = new touzi3(num); //add表示包含所有情况的投掷次数的总和 int add = 0; for(int i = num; i <= 6 * num; i++){ System.out.print(i + ":" + t.now[i] + " "); add += t.now[i]; } System.out.println(); System.out.println("投掷次数的和" + add); } }

    `

    转载请注明原文地址: https://ju.6miu.com/read-664608.html

    最新回复(0)