概率(5)---涂色问题

问题描述:

有一个木桶,里面有M个白球,小明每分钟从桶中随机取出一个球涂成红色(无论白或红都涂红)再放回,问小明将桶中球全部涂红的期望时间是多少?

分析过程:

数学期望类的题目,主要是要理解什么是数学期望,数学期望是干什么用的,关于这些问题的解答,大家可以自己去理解,思考或者翻书,我要讲的内容是如何利用这些数学期望的特点。

数学期望的递归特性:

飞行棋大家都玩过吧,应该知道每次抛到6,就有一架飞机可以出门了,那么问你一架飞机可以出门的时候,抛筛子次数的数学期望是多少?

你估计会毫不犹豫的说是6(P=1/6,E=1/P=6),但是你思考过深一层次的原因吗?

好吧,我来告诉你,我们记抛6的期望次数是E,如果第一次抛的是6,那么就是1次,概率是1/6;如果第一次不是6呢,那么次数是1+E,概率为5/6;

那么 E = 1 * (1/6) + (1+E) * (5/6),你可以很容易的解出 E = 6

上面加粗的红色字体用的就是类似一个递归的概念,希望你能理解吧,不行的话,那只能自己去努力理解了,呵呵。

 

现在我们开始解答上面的问题:

令P[i]代表M个球中已经有i个球是红色后,还需要的时间期望,去将所有球都变成红色。

 

So,给出递归式:P[i]= (i/M) * P[i] + (1-i/M)* P[i+1] + 1

我相信大家都能理解这个公式的含义,不过还是解释一下,在P[i]的情况下,我们选一次球,如果是红球,那么概率是i/M,子问题还是P[i],如果是白球,那么概率是1-i/M,子问题是P[i+1],注意你当前的选球操作要计算在内,即一次

 

化简如上递归式得:P[i] = P[i+1] + M/(M-i),显然P[M] = 0;

所以:

P[M-1] = P[M] + M/1

P[M-2] = P[M-1] + M/2

P[0] = P[1] + M/M

综上:P[0] = 0 + M/1 + M/2 + … + M/M至此问题已经解决,不过我希望大家学到的不是这个答案,而是分析这个题目的过程

 

最终答案:

0 + M/1 + M/2 + M/3 + … + M/M


括号里的式子在M比较大的时候约等于lnM,所以整个期望值大约是MlnM
(因为lnx = ∫(x,1) 1/tdt,1 + 1/2 + ... + 1/M >= ∫(2,1) 1/tdt + ∫(3,2) 1/tdt + ... + ∫(M+1,M) 1/tdt = ∫(M+1,1) 1/tdt = ln(M+1), 1 + 1/2 + ... + 1/M <= 1 + ∫(2,1) 1/tdt + ∫(3,2) 1/tdt + ... + ∫(M,M-1) 1/tdt = ln(M) + 1,因此有
ln(M+1) <= 1 + 1/2 + ... + 1/M <= ln(M)+1,又有ln(M+1) >= ln(M),所以…… )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要截取 YOLOv7-segmentation 涂色区域,你可以按照以下步骤进行操作: 1. 首先,使用 YOLOv7-segmentation 模型对图像进行分割,得到每个像素的类别和对应的颜色。 2. 根据任务需求,确定你想要截取的涂色区域的类别和对应的颜色。 3. 遍历图像的每个像素,将属于目标类别的像素标记出来。 4. 根据标记的像素,计算包围涂色区域的最小矩形框。 5. 使用图像处理库(如 OpenCV)根据矩形框的坐标截取涂色区域。 下面是一个简单的示例代码,演示如何截取 YOLOv7-segmentation 涂色区域: ```python import cv2 import numpy as np # 加载分割模型和图像 model = load_yolov7_segmentation_model() image = load_image() # 进行图像分割,得到每个像素的类别和颜色 segmentation_map = model.segment(image) # 定义目标类别和颜色 target_class = "person" target_color = [0, 255, 0] # 绿色 # 遍历图像的每个像素,标记目标类别的像素 target_pixels = np.where(segmentation_map == target_color) # 计算包围涂色区域的最小矩形框 x, y, w, h = cv2.boundingRect(target_pixels) # 截取涂色区域 cropped_region = image[y:y+h, x:x+w] # 显示截取的涂色区域 cv2.imshow("Cropped Region", cropped_region) cv2.waitKey(0) cv2.destroyAllWindows() ``` 请注意,以上代码仅为示例,你需要根据实际情况进行适当的修改和调整。此外,你还需要替换示例代码的 `load_yolov7_segmentation_model()` 和 `load_image()` 函数,以便正确加载和处理模型和图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值