欢迎光临散文网 会员登陆 & 注册

【17集】计算机模拟动画合集-科普-中英cc字幕-Primer

2023-07-14 18:01 作者:合适-_-  | 我要投稿

#p1中的python代码模拟


# -*- coding: utf-8 -*-

"""

Created on Fri Jul 14 13:34:14 2023


@author: wangq

"""

"""

al 模拟生物

"""

"""

食物成对出现,物种随机选择一对食物,如果有其他物种,也选择这个食物。那么他们会平分这一个食物,

"""

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    #显示负号


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['食物数量']>0:

                    x['食物数量']-=1

                    x[key]+=1

    #第二天各自的数量

    num = {'鹰':0,'鸽子':0}

    for i in range(len(food)):

        if food[i]['食物数量'] == 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]['食物数量'] == 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 = [{'食物数量':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(['鸽子', '总数'])

    plt.show()

       

【17集】计算机模拟动画合集-科普-中英cc字幕-Primer的评论 (共 条)

分享到微博请遵守国家法律