z0 发帖数: 71 | 1 【 以下文字转载自 Statistics 讨论区 】
发信人: z0 (z家老大), 信区: Statistics
标 题: 问个概率的题
发信站: BBS 未名空间站 (Wed May 6 22:54:58 2015, 美东)
一副扑克牌52张,每次随机抽一张然后随机放回去,问最后一张到第一张的期望步数是多
少?
肯定比52*52小,写了个小程序模拟了一下是1640多?有几天具体是多少忘了,肯定是1600
多.
不知道题说清楚了没有?拜求解析过程.
谢谢. | z0 发帖数: 71 | 2 多谢各位出手,谢谢!!!
1600
【在 z0 的大作中提到】 : 【 以下文字转载自 Statistics 讨论区 】 : 发信人: z0 (z家老大), 信区: Statistics : 标 题: 问个概率的题 : 发信站: BBS 未名空间站 (Wed May 6 22:54:58 2015, 美东) : 一副扑克牌52张,每次随机抽一张然后随机放回去,问最后一张到第一张的期望步数是多 : 少? : 肯定比52*52小,写了个小程序模拟了一下是1640多?有几天具体是多少忘了,肯定是1600 : 多. : 不知道题说清楚了没有?拜求解析过程. : 谢谢.
| d****n 发帖数: 397 | 3 not 52 * 2 = 104?
1600
【在 z0 的大作中提到】 : 多谢各位出手,谢谢!!! : : 1600
| z0 发帖数: 71 | 4 No, it's over 1600.
【在 d****n 的大作中提到】 : not 52 * 2 = 104? : : 1600
| P******r 发帖数: 1342 | | d****n 发帖数: 397 | 6 程序错了。贴出来看看。
【在 z0 的大作中提到】 : No, it's over 1600.
| z0 发帖数: 71 | | P******r 发帖数: 1342 | | d****n 发帖数: 397 | 9 听你的意思应该是从52张牌里面随机选一张1/52.然后随机放回1/2概率牌数不变,1/2
牌数少一。
其实就是52 * 2
下面是code
#! /usr/bin/python
import random
class Solution:
def card(self,n):
steps = 0
while n != 0:
if random.random() < 0.5:
n -= 1
steps += 1
return steps
def run_card_avg(self):
M = 1000
n = 52
sum = 0
for i in range(M):
# print i, self.card(n)
sum += self.card(n)
return sum * 1.0 / M
if __name__ == "__main__":
sol = Solution()
print sol.run_card_avg()
【在 z0 的大作中提到】 : 解出来了也是1600多.
|
|