期望的运用

文章讲述了数学期望的概念,通过赌徒难题展示了其在决定奖金分配中的应用,并将其原理应用于编程题中,探讨如何使用动态规划求解最优策略,最小化将数字变为零所需的期望日元数。

期望,简单来说就是做一个事情可能得到结果的平均值。

在17世纪,有一个赌徒向法国著名数学家帕斯卡挑战,给他出了一道题目:甲乙两个人赌博,他们两人获胜的机率相等,比赛规则是先胜三局者为赢家,一共进行 555 局,赢家可以获得 100100100 法郎的奖励。当比赛进行到第 444 局的时候,甲胜了 222 局,乙胜了 111 局,这时由于某些原因中止了比赛,那么如何分配这 100100100 法郎才比较公平?

用概率论的知识,不难得知,甲获胜的可能性大,乙获胜的可能性小。

因为甲输掉后两局的可能性只有 12×12=14\frac{1}{2}\times\frac{1}{2}=\frac{1}{4}21×21=41,也就是说甲赢得后两局或后两局中任意赢一局的概率为 1−14=341-\frac{1}{4}=\frac{3}{4}141=43,甲有 75%75\%75% 的期望获得 100100100 法郎;而乙期望赢得 100100100 法郎就得在后两局均击败甲,乙连续赢得后两局的概率为 12×12=14\frac{1}{2}\times\frac{1}{2}=\frac{1}{4}21×21=41,即乙有 25%25\%25% 的期望获得 100100100 法郎奖金。

可见,虽然不能再进行比赛,但依据上述可能性推断,甲乙双方最终胜利的客观期望分别为 75%75\%75%25%25\%25%,因此甲应分得奖金的 100×75%=75100\times75\%=75100×75%=75 法郎,乙应分得奖金的的 100×25%=25100\times25\%=25100×25%=25 法郎。这个故事里出现了“期望”这个词,数学期望由此而来。

例子:
某城市有 100000100000100000 个家庭,没有孩子的家庭有 400040004000 个,有一个孩子的家庭有 900009000090000 个,有两个孩子的家庭有 600060006000 个,有3个孩子的家庭有 300030003000 个,则每个家庭期望有多少个孩子?

则此城市中任一个家庭中孩子的数目是一个随机变量,记为 XXX。它可取值 0,1,2,30,1,2,30,1,2,3

其中,XXX000 的概率为 0.040.040.04,取 111 的概率为 0.90.90.9,取 222 的概率为 0.020.020.02,取 333 的概率为 0.020.020.02

设它的数学期望值为 E(X)E(X)E(X),则 E(X)=0×0.01+1×0.9+2×0.02+3×0.02=1E(X)=0\times0.01+1\times0.9+2\times0.02+3\times0.02=1E(X)=0×0.01+1×0.9+2×0.02+3×0.02=1. 所以每个家庭期望有 111 个孩子。

现在,我们来把这种期望计算方法运用在编程题中。

[ABC350E] Toward 0

给定整数 nnn 。可以执行以下两种操作。

  1. 消耗 xxx 日元将 nnn 变为 ⌊na⌋\lfloor \frac{n}{a}\rflooran
  2. 消耗 yyy 日元,在整数区间 [1,6][1,6][1,6] 内等概率选取一个整数 bbb ,将 nnn 变为 ⌊nb⌋\lfloor \frac{n}{b}\rfloorbn

求在最优策略下将 nnn 变为 000 需要消耗的最少的日元。

同样的,可以通过 dfs 求期望需要的日元。

#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,a,x,y;
map <int,double> dp;
double dfs(int u)
{
	if (!u) return 0;
	if (dp[u]) return dp[u];
	double f = x + dfs(u/a);
	double g = 6*y;
	for (int i = 2;i <= 6;i++) g += dfs(u/i);
	g /= 5.0;
	return dp[u] = min(f,g);
}
signed main()
{
	cin >> n >> a >> x >> y;
	printf("%.8lf",dfs(n));
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值