練習題
在英國,工黨成員的第二代加入工黨的機率爲 0.5,加入保守黨的機率爲 0.4, 加入自由黨的機率爲 0.1。而保守黨成員的第二代加入保守黨的機率爲 0.7,加入工黨的 機率爲 0.2,加入自由黨的機率爲 0.1。而自由黨成員的第二代加入保守黨的機率爲 0.2, 加入工黨的機率爲 0.4,加入自由黨的機率爲 0.4。求自由黨成員的第三代加入工黨的概 率是多少?在通過較長的時間後,各黨成員的後代加入各黨派的機率分佈是否具備穩定 性? python
# -*- coding: utf-8 -*-
""" Created on Thu Jan 12 10:42:13 2017 @author: DaiPuWei """
""" 這是練習題一: 在英國,工黨成員的第二代加入工黨的機率爲 0.5,加入保守黨的機率爲 0.4, 加入自由黨的機率爲 0.1。而保守黨成員的第二代加入保守黨的機率爲 0.7,加入 工黨的 機率爲 0.2,加入自由黨的機率爲 0.1。而自由黨成員的第二代加入保守黨的機率 爲 0.2, 加入工黨的機率爲 0.4,加入自由黨的機率爲 0.4。求自由黨成員的第三代加入 工黨的概 率是多少?在通過較長的時間後,各黨成員的後代加入各黨派的機率分佈是否具 有穩定性? """
import pandas as pd
import numpy as np
def run_main():
""" 這是主函數 """
#黨派名稱
party_name = ['工人黨','保守黨','自由黨']
#黨派下一代的轉移矩陣
p = np.array([0.5,0.4,0.1,0.7,0.2,0.1,0.2,0.4,0.4]).reshape((3,3))
party_transition_matrix = pd.DataFrame(p,index = party_name,columns = party_name)
#第一次機率分佈
probility = [0.,0.,0.]
sumall = sum(p)
for i in range(3):
probility[i] = sumall[i]/sum(sumall)
first_probility = pd.Series(probility,index = party_name)
#自由黨成員第三代計入工人黨的機率
tmp = first_probility * party_transition_matrix
print('自由黨成員第三代計入工人黨的機率爲:%f' %tmp['工人黨']['自由黨'])
#各黨派成員的後代假如各黨派的機率分佈
a,b = np.linalg.eig(party_transition_matrix)
finally_probility = []
for i in range(len(b)):s
if all(b[i]>0):
finally_probility = b[i]
break
finally_probility = finally_probility / sum(finally_probility)
Finally_probility = pd.Series(finally_probility,index = party_name)
print('各黨派成員的後代假如各黨派的機率分佈以下:')
print(Finally_probility)
if __name__ == '__main__':
run_main()
本文分享 CSDN - 追夢者_AIer。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。web