练习题
在英国,工党成员的第二代加入工党的概率为 0.5,加入保守党的概率为 0.4, 加入自由党的概率为 0.1。而保守党成员的第二代加入保守党的概率为 0.7,加入工党的 概率为 0.2,加入自由党的概率为 0.1。而自由党成员的第二代加入保守党的概率为 0.2, 加入工党的概率为 0.4,加入自由党的概率为 0.4。求自由党成员的第三代加入工党的概 率是多少?在经过较长的时间后,各党成员的后代加入各党派的概率分布是否具有稳定 性?
# -*- 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源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4860298/blog/4766008