狗家数学题

100 个箱子抽奖,每一轮可以选择某一个箱子进行抽奖,每个箱子有一定概率抽中和抽不中,抽中按照reward奖励。
箱子分值 rewards
e.g.[1, 2, 3, …, 99, 100]
抽中概率 probs
e.g. [1.0, 0.99, 0.98, …, 0.02, 0.01]

每一轮有该概率抽中得分,抽不中就游戏结束不能继续下一轮,每一轮可以重复用箱子。
求 x 轮抽奖的最大期望,每个箱子可以重复抽

function draw(List< int >: rewards, List< float >: probs, int: x)

(按照我的理解尽可能还原题目了。如果有见过题目的发现错误欢迎纠正。。)

可能的解法:
一轮:
dp1 = max(reward_i*prob_i)

二轮:
dp2 = max((reward_i+dp1)*prob_i)

以此类推
dp_k = max((reward_i+dp_k-1)*prob_i)
。。。。。。

是必须沿着箱子的序号抽吗

抽的规则是什么?

更新了题目

更新了题目。

Excel 画了一下,中间最大

黄线是乘积

积分的期望单轮最大是50或51,都是 25.5。但问题是失败率是 50%,这样意味着抽箱子终止。
如果我一直抽1,这样可以保证一直抽,那不是无穷大么?
当然题目问的是x轮,这个x就很重要了。
答案跟x有关。

补充一下来源,这题我怎么觉得应该是ML或DS考的,不像是码工。我感觉是写错了,这两题都像ds的。

确实是和X有关,关系到游戏进行到几轮,和博弈问题很像

我觉得这道题应该问的是期望,而不是最大期望吧?

你的意见是怎么算?

我觉得你可以考虑把整个100盒子抽奖看做是一次抽奖,可以算出对应抽中的概率,和对应的reward,这样就可以把整个问题看做是超几何分布,你就可以去算第X轮的期望了,这是我的理解

但是每一轮都可以挑选一个有最好期望的箱子再开奖?
这是我不理解的地方之一。

我是这样理解得:

第k轮假设选了第j个箱子,那么此时可以获得到最大的points
dp[k][j] = max(dp[k][j], dp[k-1][t] + rewards[j]*pros[j]*pros[t]) t是从1到100都有遍历一遍 (空间是可以优化的)