將n個數(1.2.3.4……n),隨機排序做成離散圖,波峰數和波谷數的和的數學期望是多少?

比如10個數:隨機排序後1、3、5、7、9、10、8、6、4、2。

波峰數:1(波峰:k&>k+1k&>k-1,k為序號)

波谷數:0(波谷:k&總計:1


數學期望是可加的,於是,甭管兩個變數XY是否獨立,E(X+Y) = E(X) + E(Y),於是:

E(波峰數+波谷數)

= E(波峰數) + E(波谷數) = E(波峰數)*2 //根據對稱性

= (E(位置2出現波峰) + E(位置3出現波峰) + ... + E(位置n-1出現波峰)) * 2

= (n - 2) * E(位置2出現波峰) * 2

= (n - 2) * p(a[2] &> a[1] a[2] &> a[3]) * 2

= (n - 2) * p(a[2]是a[1, 2, 3]中最小的那個) * 2

= (n - 2) * 2 / 3

各種表述比較隨意。。。


frac{2n-4}{3}

==========割==_(:з」∠)_=========

@陳霜 其實已經給出了過程,但是我不能只擺一個答案在這裡,特此填坑。

先簡化問題。要求期望就要有概率,並且直覺告訴我們「波峰」和「波谷」出現的概率應該是一樣的,於是我們要先算出:在此離散圖的任意位置 i,出現「波峰」的概率是多少。根據題中「波峰」的定義,

既:

Nleft( i 
ight) >Nleft( i-1<br />
ight)Nleft( i 
ight) > Nleft( i+1<br />
ight)

(Nleft( i 
ight) 代表在位置i上的數)

所以要算波峰出現的概率,只需要考慮該位置上的數和與其緊鄰的兩個數就夠了。根據題目,這三個數必定兩兩不等,必然會有大、中、小這樣的次序。全排列之:

大中小

大小中

中大小

中小大

小大中

小中大

其中,符合「波峰」的有

中大小

小大中

兩種,所以波峰概率為frac{1}{3} 。(同樣,可以看出波谷概率相同。)

接下來,如 @陳霜 所說,E(波峰數+波谷數) = E(波峰數) + E(波谷數) = 2 * E(波峰數)。

又因為在數列兩端點不可能出現波峰或波谷,E(波峰數) = (n-2)	imes frac{1}{3}

Rightarrow E(波峰數+波谷數) = frac{2n-4}{3} .

(ps. 數學向來硬傷,錯誤疏漏請隨意噴 _(:з」∠)_ )

(pps. 其實這個問題可以計算機算出幾組數據畫個圖就能看出關係,再想辦法證_(:з」∠)_(數學歸納應該可以吧。。))


從數學上的計算 @陳霜 的答案已經很完美了。

不過既然樓主問題的標籤中含有編程,那麼我從使用計算機模擬的方面也給出一個方法,權做開闊一下思路。

核心的代碼如下(Python3.x),使用simulate函數來模擬size個數的情形:通過反覆模擬count次,返回其中波峰/波谷的平均數。

def simulate(size, count=None):
xs = np.arange(size)
count = 10**5 if count is None else count
total = 0
for _ in range(count):
np.random.shuffle(xs)
for i in range(1, len(xs)-1):
if (xs[i] - xs[i-1])*(xs[i] - xs[i+1]) &> 0:
total +=1
return total / count

對n = 2,3,4,..,32依次模擬,得到相應的波峰波谷數目,然後得到擬合的直線方程為:

y = 0.67n - 1.33 approx frac{2n-4}{3}

完整的python代碼與運行結果如下:

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

def simulate(size, count=None):
xs = np.arange(size)
count = 10**5 if count is None else count
total = 0
for _ in range(count):
np.random.shuffle(xs)
for i in range(1, len(xs)-1):
if (xs[i] - xs[i-1])*(xs[i] - xs[i+1]) &> 0:
total +=1
return total / count

x = np.arange(2, 33)
y = [simulate(n) for n in x]

a, b = np.polyfit(x, y, 1)
fig, ax = plt.subplots(figsize=(15, 5))
fig.suptitle("$E_n = %.2fn%.2f$" % (a, b))
ax.plot(x, y)
ax.set_xlim([2, 32])
ax.set_xticks(np.linspace(2, 32, 8).astype(int))
ax.grid(True)
ax.set_xlabel("n")
ax.set_ylabel("E")


怎麼定義波峰和波谷呢?在多大的區域是極大值 或 極小值。是不是比左右兩邊的值都大(小)就算是極大(小)值?


推薦閱讀:

隨機變數的期望E(x)與X的平均值之間的區別與聯繫?
事件的隨機性能用混沌理論或量子理論來解釋么?
最大似然準則在什麼情況下不是最優演算法?
乘客等車時間是否服從正態分布?若服從正態分布為什麼?
有一個正整數N可以分解成若干個正整數之和,問如何分解能使這些數的乘積最大?求詳細解釋。

TAG:數學 | 編程 | 計算機科學 | 概率論 | 概率論與數理統計 |