这篇论文中的模型是基于代理人模型的,每个代理人有一个随机生成的才华值和一个随机生成的运气值。代理人在每个时刻都会进行行动,行动的结果受到才华值和运气值的影响。以下是一个简单的Python代码实现:

import random

class Agent:
    def __init__(self, talent, luck):
        self.talent = talent
        self.luck = luck
        self.wealth = 1
        
    def act(self):
        r = random.random()
        if r < self.luck:
            self.wealth *= 2
        elif r < self.luck + self.talent:
            self.wealth += 1
        else:
            self.wealth -= 1
        if self.wealth <= 0:
            return False
        return True

class Model:
    def __init__(self, num_agents, talent_mean, talent_std, luck_mean, luck_std):
        self.agents = []
        for _ in range(num_agents):
            talent = random.gauss(talent_mean, talent_std)
            talent = max(0, min(1, talent))
            luck = random.gauss(luck_mean, luck_std)
            luck = max(0, min(1, luck))
            self.agents.append(Agent(talent, luck))
    
    def run(self, num_steps):
        for _ in range(num_steps):
            for agent in self.agents:
                if not agent.act():
                    self.agents.remove(agent)
            if len(self.agents) == 0:
                break
    
    def wealth_distribution(self):
        wealths = [agent.wealth for agent in self.agents]
        return wealths

这个模型包括两个类,一个是代理人类,另一个是模型类。代理人类有才华值、运气值和财富值三个属性,以及一个行动方法,用随机数模拟代理人的行动结果。模型类包括一组代理人,以及运行模型和计算财富分布的方法。

我们可以使用这个模型来运行一些实验,比如:

import matplotlib.pyplot as plt

model = Model(1000, 0.5, 0.1, 0.5, 0.1)
model.run(1000)
wealths = model.wealth_distribution()
plt.hist(wealths, bins=20)
plt.show()

这段代码创建了一个才华值和运气值均值为0.5,标准差为0.1的代理人模型,运行1000个时刻,然后绘制财富分布的直方图。我们可以根据不同的参数设置运行多组实验,比较不同参数下的财富分布。

用Python代码实现论文《Talent vs Luck: 随机性在成功与失败中的作用》中的模型

原文地址: https://www.cveoy.top/t/topic/nlz1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录