题目描述
小 Q 同学是一个热爱学习的人,但是他最近沉迷于各种游戏,龙与地下城就是其中之一。 在这个游戏中,很多场合需要通过掷骰子来产生随机数,并由此决定角色未来的命运,因此骰子堪称该游戏的标志性道具。
骰子也分为许多种类,比如 4 面骰、6 面骰、8 面骰、12 面骰、20 面骰,其中 20 面骰用到的机会非常多。当然,现在科技发达,可以用一个随机数生成器来取代真实的骰子,所以这里认为骰子就是一个随机数生成器。
在战斗中,骰子主要用来决定角色的攻击是否命中,以及命中后造成的伤害值。举个例子,假设现在已经确定能够命中敌人,那么 YdXYdX(也就是掷出 YY 个 面骰子之后所有骰子显示的数字之和)就是对敌人的基础伤害。在敌人没有防御的情况下,这个基础伤害就是真实伤害。
众所周知,骰子显示每个数的概率应该是相等的,也就是说,对于一个 XX 面骰子,显示
中每一个数字的概率都是 1X1X 。
更形式地说,这个骰子显示的数 WW 满足离散的均匀分布,其分布列为
除此之外还有一些性质 WW 的一阶原点矩(期望)为 WW 的二阶中心矩(方差)为 言归正传,现在小 Q 同学面对着一个生命值为 AA 的没有防御的敌人,能够发动一次必中的 攻击,显然只有造成的伤害不少于敌人的生命值才能打倒敌人。但是另一方面,小 Q 同学作为强迫症患者,不希望出现 overkill,也就是造成的伤害大于 BB 的情况,因此只有在打倒敌人并且不发生 overkill 的情况下小 Q 同学才会认为取得了属于他的胜利。 因为小 Q 同学非常谨慎,他会进行 10 次模拟战,每次给出敌人的生命值 以及 overkill 的标准 BB,他想知道此时取得属于他的胜利的概率是多少,你能帮帮他吗? 输入格式第一行是一个正整数 ,表示测试数据的组数。 输出格式对于每组测试数据,输出 1010 行,对每个询问输出一个实数,要求绝对误差不超过 0.0135790.013579,也就是说,记输出为 aa,答案为 ,若满足 |a−b|≤0.013579|a−b|≤0.013579 ,则认为输出是正确的。 样例样例输入
样例输出
数据范围与提示对于 100%100% 的数据,T≤10T≤10,2≤X≤202≤X≤20,1≤Y≤2000001≤Y≤200000 ,0≤A≤B≤(X−1)Y0≤A≤B≤(X−1)Y ,保证满足 Y>800Y>800 的数据不超过 22 组。 题解应用中心极限定理 。中心极限定理 - 维基百科 设随机变量 独立同分布, 且具有有限的数学期望和方差 E(Xi)=μE(Xi)=μ, D(Xi)=σ2≠0(i=1,2,⋯,n)D(Xi)=σ2≠0(i=1,2,⋯,n) 。记 这个定理的含义是:nn 个独立同分布,且具有有限的数学期望 和方差 σ2σ2 的随机变量,他们的平均值的分布函数在 n→∞n→∞ 时无限近似于期望为 μμ ,方差为σ2n√σ2n 的正态分布。 考虑到题目要求的精度误差十分宽松,我们考虑在 YY 比较大的时候用正态分布函数的积分来近似答案。 由于正态分布函数的概率密度函数 的不定积分不是初等函数,所以考虑自适应辛普森积分。函数是光滑的,所以误差很小。 有一点需要注意:由于峰比较窄,积分区间比较大的时候可能出现 l,3l+r4,l+r2,l+3r4,rl,3l+r4,l+r2,l+3r4,r五处的函数值都几乎为零,但是峰在积分区间内的情况,这会导致答案错误。一种方法是分成若干个小的区间分别进行辛普森积分,第二种方式是只计算 [A,B]∩[μ−3σ,μ+3σ][A,B]∩[μ−3σ,μ+3σ] 的积分(因为正态分布函数在[μ−3σ,μ+3σ][μ−3σ,μ+3σ] 外的比率只占不到 0.3%0.3% ,可以忽略不计), 还有一种方法是直接使用误差函数 erf(x)=2π√∫x0e−t2dterf(x)=2π∫0xe−t2dt 直接计算(需要C++11)。 My Code
05-18
![]()
评论
![]() ![]() ![]()
查看更多评论
![]()
添加红包
![]() ![]() |
---|