背景
在牛客网上看到一则关于37%法则的题目(https://www.nowcoder.com/tutorial/95/b53cf42a963e4f25aacae2251e8efaf8),其公式推导过程不是很清晰,故记录一下。
问题
一个活动,n个女生手里拿着长短不一的玫瑰花,无序的排成一排,一个男生从头走到尾,试图拿更长的玫瑰花,一旦拿了一朵就不能再拿其他的,错过了就不能回头,问最好的策略?
推理过程
笔者想到的一种策略是直接取第一个,因为是无序,取第一个能得到最长的玫瑰的概率是1/n,不过这并不是最好的策略。
还有一种策略是将该序列分为前后两个部分,前面的部分只看不选,其中玫瑰的最长长度作为参考值,在后面的部分中,一旦有玫瑰的长度大于参考值,则选择该玫瑰。笔者不清楚这种方式为什么会是最好的策略,不过,确实比直接选取第一个的结果要好很多。
接下来,就是确定如何将序列分为前后两部分,从哪个位置开始分割。
首先设最长的玫瑰在序列中的位置为i,则1/n.根据前面所说的,我们期望后边部分大于参考值的那支玫瑰刚好是最长的,即[0,i-1]中最长的刚好落在前面的部分中,设序列分割的位置为k,则
[0,i-1]中最长的刚好落在前面的部分中的概率为k/(i-1)
则
最长的玫瑰在序列中的位置为i,且[0,i-1]中最长的刚好落在前面的部分中的概率为
1/n*k/(i-1)
其中的i的取值范围可以是[k+1,n]
因此
以位置k进行分割后,按照上面的策略,得到最长玫瑰的概率是
1/n*k/(i-1)在[k+