标记重捕法代码
import random #种群数量N N=50000 #标记 mark=1000 #重捕次数 r= 100 #每次重捕的条数 num=1000 fish= range(N) #N条鱼 #标记 M= random.sample(fish, mark) #捕捉,标记mark条 #重捕r次 N2=[] for i in range(r): #重捕 n= random.sample(fish, num) #看有多少被标记了 m= len(set(M)&set(n)) #推算种群数量的误差 N2.append((round(mark*num/m)-N)/N) import matplotlib.pyplot as plt import numpy as np x= np.linspace(0, r, r) plt.plot(x, N2, 'r-o', x, [0]*r, 'b-') plt.show() print("平均误差", sum(N2)/r)
运行结果:
平均误差 0.11835359999999996
发表回复