• [研究笔记]n个骰子得到点数和的概率分布


    Abstract

    求n个骰子得到点数和的概率分布的各种方法。

    Body

    起源是这个:

    ****************

    发信人: dominic123 (dominic), 信区: ACM_ICPC
    标 题: 【算法求助】n个骰子得到点数和的概率分布~
    发信站: 北邮人论坛 (Thu Dec 2 22:23:23 2010), 站内

    掷n个骰子得到点数和的概率分布?

    例:掷2个骰子的时候,得到的点数和为2,3,4,5,6,7,8,9,10,11,12;得到它们的概率分别是1/36,2/36,3/36,4/36,5/36,6/36,5/36,4/36,3/36,2/36,1/36。

    问题是:当投掷n个骰子的时候得到点数和的概率分布是怎样的?请附推论过程。[ema23]

    ================

    然后我做了个小总结:

    ****************

    发信人: jffifa (绮想), 信区: ACM_ICPC
    标 题: Re: 【算法求助】n个骰子得到点数和的概率分布~
    发信站: 北邮人论坛 (Fri Dec 3 22:46:37 2010), 站内

    总结一下:


    [记号]

    记C(i,j)为i个元素中取j个做组合的组合数。

    骰子取值1,2,3,4,5,6,记Ft(n,m)为n个这样的骰子生成和为m的方案数。
    骰子取值0,1,2,3,4,5,记F(n,m)为n个这样的骰子生成和为m的方案数。
    容易有F(n,m)=Ft(n,m+n)。对于Ft(n,m),求解F(n,m-n)即可。
    则F(n,m)等价为(组合模型为):
    a. n个离散RNG(Random Number Generator),每个离散RNG生成范围为[0,6)的整数,生成和为m的生成方案个数。
    b. m个无区别球放进n个有区别盒子,每个盒子球数在[0,6)间方案数。
    c. 线性方程x[1]+x[2]+...+x[n]=m,x[i]∈[0,6)的整数解个数。


    [解法]

    1.生成函数法:
    F(n,m)=
    (1+x+x^2+...+x^5)^n中x^(m-n)的系数。

    2.dp/离散域卷积法:
    F(n,m)=sigma(k from 0 to 5) F(n-1,m-k),边界值F(0,0)=1。
    即u(i)=1 (i为整数且i∈[0,6)),n个u相卷。

    3.组合数学法:
    记G(p,q)为q个无区别球放进p个有区别盒子,无球数限制([0,+inf))的方案数。容易有G(p,q)=C(p+q-1,q)。为表示方便令G(p,q)=0 (q<0)。
    考虑G(n,m)与F(n,m)第二个组合模型的联系。如果有一个盒子球数超过6,从该盒子中拿出6个球,则等价方案数为G(n,m-6),有两个盒子超过6,则等价方案数为G(n,m-12),……。
    根据容斥原理,有:
    F(n,m)=C(n,0)*G(n,m)-C(n,1)*G(n,m-6)+C(n,2)*G(n,m-12)-...
    F(n,m)=sigma(i from 0 to [m/6]) (-1)^i * C(n,i) * G(n,m-i*6)([]为下取整,由于m<0时G(n,m)=0所以只要加到[m/6]即可)

    4.Ehrhart多项式法:
    考虑F(n,m)的第三个组合模型,该方程表示一个n维线性空间中的n-1维HyperPlane。其整数解对应HyperPlane上所有整点。而加上 限制HyperRectangle:([0,6))^n后,整数解对应就是HyperPlane截HyperRectangle所得截面上所有整点。
    易知F(n,m)所对应的HyperPlane与F(n,m+1)所对应的HyperPlane间没有整点,且F(n,m)截HyperRectangle与F(n,m+1)截HyperRectangle的体积易求(见watashi大牛文章 http://watashi.ws/blog/1538/rng-hyperplane-hyperrectangle/ )。则两截面间体积为上述两个体积差。
    同时,由Ehrhart多项式可以写出两截面间体积与整点数的关系。则可通过二者关系求出答案。
    但是,具体过程我不会……

    方法2对此题比较实用。借助FFT或数论转换可以降低算法复杂度。


    [推广]

    如果是n个骰子的平方和为m呢?立方和呢?
    此时方法4还有一定价值(但Ehrhart多项式不能用),HyperPlane变为曲面了。
    如果是连续变量还好做,但是离散的就真的很难。
    --
    沒有白天也沒有黑夜。走不出上鎖的時間。今天或明天 瞬間無法永遠。剩下只能哭泣的眼。分不清是你還是偽裝的我。看不見窗外的天氣。就算到最後 沒有誰能逃離。我會等待著你。
    <少女密室> 冬。

    ================

    连续变量的做法见http://biribiri.blogbus.com/logs/85754889.html

    来自watashi大牛的那篇文章及2009国家集训队论文《信息学竞赛中概率问题求解初探 - 梅诗珂》。

    Reference

    http://biribiri.blogbus.com/logs/85754889.html

    2009国家集训队论文《信息学竞赛中概率问题求解初探 - 梅诗珂》

  • 相关阅读:
    Windows Server 2016-安装AD域服务注意事项
    Windows Server 2016-WinSer2016 Active Directory新增功能
    Windows Server 2016-Active Directory域服务概述
    MDT 2013 从入门到精通之概念扫盲
    SpringBoot | 第五章:多环境配置
    SpringBoot | 第四章:日志配置(转)
    SpringBoot | 第三章:springboot配置详解
    SpringBoot | 第二章:lombok介绍及简单使用
    SpringBoot | 第零章:前言
    转自IBM:Apache HTTP Server 与 Tomcat 的三种连接方式介绍
  • 原文地址:https://www.cnblogs.com/jffifa/p/2291072.html
Copyright © 2020-2023  润新知