【17集】計算機(jī)模擬動畫合集-科普-中英cc字幕-Primer

#p1中的python代碼模擬
# -*- coding: utf-8 -*-
"""
Created on Fri Jul 14 13:34:14 2023
@author: wangq
"""
"""
al 模擬生物
"""
"""
食物成對出現(xiàn),物種隨機(jī)選擇一對食物,如果有其他物種,也選擇這個食物。那么他們會平分這一個食物,
"""
import random
import matplotlib.pyplot as plt
import json
from matplotlib.font_manager import FontProperties
plt.rcParams['font.sans-serif'] = ['Simhei'] ?#顯示中文
plt.rcParams['axes.unicode_minus'] = False ? ?#顯示負(fù)號
def find_food(species_num,food):
? ? for key,value in species_num.items():
? ? ? ? if value>0:
? ? ? ? ? ? for i in range(value):
? ? ? ? ? ? ? ? choice = random.randint(0,len(food)-1)
? ? ? ? ? ? ? ? x = food[choice]
? ? ? ? ? ? ? ? if x['食物數(shù)量']>0:
? ? ? ? ? ? ? ? ? ? x['食物數(shù)量']-=1
? ? ? ? ? ? ? ? ? ? x[key]+=1
? ? #第二天各自的數(shù)量
? ? num = {'鷹':0,'鴿子':0}
? ? for i in range(len(food)):
? ? ? ? if food[i]['食物數(shù)量'] == 0:#有兩個生物吃了
? ? ? ? ? ? #鷹 和 鴿子
? ? ? ? ? ? if food[i]['鷹'] == 1 and food[i]['鴿子'] == 1:
? ? ? ? ? ? ? ? a = random.randint(0,1)
? ? ? ? ? ? ? ? # 鴿子 有一半幾率存活
? ? ? ? ? ? ? ? num['鴿子'] += a
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? #鷹 有一半幾率繁殖
? ? ? ? ? ? ? ? b = random.randint(0,1)
? ? ? ? ? ? ? ? num['鷹'] += 1+b
? ? ? ? ? ? #鷹 和 鷹
? ? ? ? ? ? if food[i]['鷹'] == 2:
? ? ? ? ? ? ? ? pass
? ? ? ? ? ? #鴿子 和 鴿子
? ? ? ? ? ? if food[i]['鴿子'] == 2:
? ? ? ? ? ? ? ? num['鴿子'] += 2
? ? ? ? elif food[i]['食物數(shù)量'] == 1:#一個生物吃了
? ? ? ? ? ? if food[i]['鷹'] == 1:
? ? ? ? ? ? ? ? num['鷹'] += 2
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? num['鴿子'] += 2
? ? return num
if __name__=='__main__':
? ? num_1 = []
? ? num_2 = []
? ? species_num = {'鷹':10,'鴿子':20}
? ? for i in range(20):
? ? ? ? food = [{'食物數(shù)量':2,'鷹':0,'鴿子':0} for i in range(1000)]
? ? ? ? species_num = find_food(species_num,food)
? ? ? ? num_1.append(species_num['鷹'])
? ? ? ? num_2.append(species_num['鴿子'])
? ? num_sum = [i+j for i,j in zip(num_1,num_2)]
? ? plt.plot([[i] for i in range(len(num_1))], num_2)
? ? plt.plot([[i] for i in range(len(num_1))], num_sum)
? ? plt.legend(['鴿子', '總數(shù)'])
? ? plt.show()
? ? ? ?