- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这是昨天在 interviewstreet 结束的编程竞赛中的一个问题:
爱丽丝和鲍勃玩游戏。第i轮(i >= 1)的操作如下:
给定 k 和抛掷结果为正面朝上的概率 (p),您的程序应该计算出 Alice 支付给 Bob 的预期美元数,以及预期的回合数。
输入
First line of input contains number of test-cases (T <= 50). Each of the next T lines contain p and k separated by a single space. p is a decimal number with at most two digits after the decimal point such that 0.6 <= p <= 1. k is a positive integer such that 0 < k <= 20.
输出
For each test-case, print two integer numbers. First number is the integer part of the expected number of rounds of game, and the second number is the integer part of the expected number of dollars Alice pays Bob.
示例输入
3
0.6 1
1 20
0.80 8
示例输出
1 3
20 400
24 976
我得到了问题的第一部分,即游戏的预期回合数。我用下面的代码搞定了
if __name__ == '__main__':
t = int(raw_input())
while t :
t -= 1
temp = str(raw_input())
p,k = temp.split(' ')
p = float(p)
k = int(k)
#print p,k
ans = 0.0
num = k * (p**k)
den = 1
q = 1.0 - p
for N in range(1,k+1):
den = den - ((p**(N-1))*q)
num = num + (N*(p**(N-1))*q)
#print (N*(q**N))
print int(num/den)
但是问题的第二部分仍然让我感到困惑,即 Alice 支付给 bob 的预期美元数。如何计算预期 yield ?
最佳答案
即使您知道预期的回合数,您也需要对所有可能的支出取其发生概率的平均值。这意味着它比仅计算预期停止时间的支出要复杂得多。以下是具体细节:
回想一下期望的技术定义,如果 X 是随机变量,则 X 的期望值是 X(w)*Pr(w) 的所有可能结果 w 的总和。如果 X 取正整数值,我们可以将其改写为 X 的期望值是 i=1 到 i*Pr(X=i) 的无穷大之和。在您的例子中,我们处理的随机变量是 T = 游戏停止的时间,以及 P = 支出。
期望轮数是对T的期望,是i=1到无穷大i*Pr(T=i)的和。因为他们只要求期望的整数部分,所以我们可以在 i*Pr(T=i) 小于 1/2^i 时停止求和。 (当 i*Pr(T=i)<1/2^i 时停止求和的想法是 1/2^i 总和为 1,但您可能需要对此进行调整以避免低估。)
P的期望稍微复杂一些。如果游戏持续 j 轮,那么支付将是从 i=1 到 j 的 2i-1 之和,即 j^2。因此只能发生形式为 j^2 的支出,并且 Pr(P=j^2)=Pr(T=j)。所以P的期望值是i=1到无穷大的i^2之和* Pr(P=i^2),等于i=1到无穷大的i^2*Pr(T=我)。同样,一旦 i^2*Pr(T=i) 小于 1/2^i,我们就可以停止求和。
关于python - 概率谜题,游戏的预期 yield ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10370425/
我对java有点陌生,所以如果我犯了一个简单的错误,请原谅我,但我不确定我哪里出错了,我收到的错误是“预期的.class,预期的标识符,而不是声明, ';'预期的。”我尝试了不同的方法,并从这些方法中
This question already has answers here: chai test array equality doesn't work as expected (3个答案) 3年前
我正在学习 Java(对不起,我的英语很差,这不是我的母语),当我在 Eclipse (JavaSE-1.7) 中在我输入的每个“try”中执行“try-finally” block 时,会出现以下消
我收到两个错误,指出 token 上的语法错误,ConstructorHeaderName expected instead & token “(”上的语法错误,< expected 在线: mTM.
我找不到错误。 Eclipse 给我这个错误。每个 { } 都是匹配的。请帮忙。 Multiple markers at this line - Syntax error on token “)”,
代码: import java.awt.*; import javax.swing.*; import java.awt.event.*; public class DoubleIt extends
我正在用 python(Vs 代码)编写代码,但出现此错误: Expected ")" Pylance 错误发生在:def main() 我试着运行我的 main 并将它打印到我的屏幕上。我用谷歌搜
我正在尝试按照 documentation 中的建议使用异步函数。但我收到此错误 意外的 token ,预期 ( async function getMoviesFromApi() { try
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
第一行包含一个表示数组长度的整数p。第二行包含用空格分隔的整数,这些整数描述数组中的每个元素。第三行打印一个整数,指示负数组的数量。 package asgn3; import java.util.*
好的,我是初学者,我必须修复此 java 表达式语言代码才能在我的系统 (Windchill) 中工作,但看起来我在语法中遗漏了一些内容: LWCNormalizedObject lwc =
我无法编译我的程序! 我想我缺少一个花括号,但我怎么也看不出在哪里! import javax.swing.*; import java.awt.*;
我的 jQuery 代码有问题,我的 Firebug 向我发出警告:需要选择器。 这是代码: $("img[id$='_tick']").each(function() { $(this).c
我的新类(class) Fountainofyouth 遇到了问题。尝试构建整个项目后,调试器显示 warning: extended initializer lists only available
我已经从 Java 转向 CPP,并且正在努力围绕构造构造函数链进行思考,我认为这是我的问题的根源。 我的头文件如下: public: GuidedTour(); GuidedTour(string
鉴于以下 for(var i=0; i< data.cats.length; i++) list += buildCategories(data.cats[i]); jsLint 告诉我 Expect
我有这个 json,但 Visual Studio Code 在标题中给了我警告。 [ { "title": "Book A", "imageUrl": "https:
我正在尝试编写一个有条件地禁用四个特殊成员函数(复制构造、移动构造、复制赋值和移动赋值)的包装类,下面是我用于测试目的的快速草稿: enum class special_member : uint8_
所以我用 F# 编写了一个非常简单的程序,它应该对 1000 以下的所有 3 和 5 的倍数求和: [1..999] |> List.filter (fun x -> x % 3 = 0 || x %
我是一名优秀的程序员,十分优秀!