Python数学建模1-模拟人类一生中会认识多少人的模型统计与分析

news2024/9/20 22:34:54

大家好,我是微学AI,今天给大家带来Python数学建模1-模拟人类一生中会认识多少人的模型统计与分析。你有没有统计过从出生到现在你接触过多少人了,你认识了多少人了,可能你只是认识,但是现在基本不联系了,可能现在联系的只有个位数,在这忙碌的现代生活,人与人的空间距离被拉远了。今天我就来统计一下,构建模型看看我们一生中会认识多少人呢?

目录
1.背景介绍
2.数学模型描述
3.数学模型构建与代码实现
4.运行结果
5.总结

1.背景介绍

我们人的一生中会认识各种各样的人,有没有统计过我们这一生会认识多少人呢,中国有14亿人,但是我们身边认识的人可能就占其中的凤毛麟角,真正认识的人的个数可能无法精确计算的,因为每个人的社交圈和人际关系都是不同的。认识的人数可以从几十到几千不等,这取决于我们的职业、生活环境和日常社交活动。

在这么多认识的人里面,能够真正陪伴我们到最后的人,这通常是指亲密的伴侣、家人或者非常亲近的朋友。这个人在我们的一生中可能只有一个或者少数几个。他们与我们分享喜怒哀乐,支持我们的梦想,以及在困难时刻给予支持和鼓励。这些人对我们来说是宝贵的,值得我们好好珍惜和维护这种关系。

2.数学模型描述

现在有一个虚拟社会的模型,这个数学模型里面有10000个人是样本个体: 每个人在一生中可能会认识各种各样的人,统计80年后每个人认识的人数排名和认识认识的平均数。

模型条件1:在学生阶段:每个人会经历幼儿园,小学,初中,高中,大学这几个阶段,也有的人还有读研究生和博士,我们把他划分成8:2,有20%读读研究生和博士,每个几段每个人都有60个同学和10个各科老师,每个人50%会有10个其他同学好朋友,50%会有20个其他发小和朋友。
在学生学习阶段每个人随机会有0-20个意外认识的人。

模型条件2:在工作阶段:有40%的人有3个单位,有20%的人有4个单位,有20%的人有2个单位,有10%的人有1个单位,有5%的人有5个以上的单位(分别是5-8个单位),有5%的人没有单位,每个单位每人随机会认识40-180个工作上的朋友、合作伙伴(这个是正态分布)。

模型条件3:在退休阶段:每个人随机会认识30-70个退休生活上的老朋友,亲戚,年轻人(这个是正态分布)。

3.数学模型构建与代码实现

我们将构建一个有10000个人的模型,然后进行预测每个人遇到的人数,对每个人一生中认识的人数排名,并统计认识认识的平均数。

模型中用到了正态分布,正态分布是概率论和统计学中一种重要的连续概率分布,常被称为高斯分布。其数学原理可以通过以下方式表示:

正态分布的概率密度函数,可以表示为:

f ( x ) = 1 σ 2 π e − ( x − μ ) 2 2 σ 2 f(x) = \frac{1}{{\sigma \sqrt{2\pi}}} e^{-\frac{{(x-\mu)^2}}{{2\sigma^2}}} f(x)=σ2π 1e2σ2(xμ)2

其中, x x x 是随机变量的取值, μ \mu μ 是均值, σ \sigma σ 是标准差。

正态分布的累积分布函数可以表示为:

F ( x ) = ∫ − ∞ x f ( t )   d t = 1 2 [ 1 + erf ( x − μ σ 2 ) ] F(x) = \int_{-\infty}^{x} f(t) \, dt = \frac{1}{2} \left[ 1 + \text{erf}\left( \frac{x-\mu}{\sigma\sqrt{2}} \right) \right] F(x)=xf(t)dt=21[1+erf(σ2 xμ)]

其中, erf ( z ) \text{erf}(z) erf(z) 是误差函数。

根据正态分布的性质,大约 68% 的数据落在均值 μ ± 1 \mu \pm 1 μ±1 标准差 σ \sigma σ 的范围内,大约 95% 的数据落在 μ ± 2 σ \mu \pm 2\sigma μ±2σ 范围内,大约 99.7% 的数据落在 μ ± 3 σ \mu \pm 3\sigma μ±3σ 范围内。这被称为正态分布的 68-95-99.7 法则。

下面是实现的代码:

import numpy as np
import matplotlib.pyplot as plt

# 初始化
num_people = 10000
people = np.zeros(num_people)

# 生成一个服从正态分布的随机数字
def generate_random_number(mean,mins,maxs,sigma = 5):
    # 使用numpy库生成一个服从正态分布的随机数
    number = np.random.normal(mean, sigma)
    # 对结果取整并限制在0到10之间
    number = int(round(number))
    number = max(mins, min(number, maxs))
    return number

# 学生阶段
for i in range(num_people):
    friends = 60*5 + 10  # 同学和老师
    if np.random.rand() < 0.5:
        friends += 20  # 其他同学好朋友
    else:
        friends += 30  # 其他发小和朋友
    if np.random.rand() < 0.2:
        friends += (60 + 10) * 2  # 研究生和博士阶段
    # 0-10随机生成数字
    friends += np.random.randint(0, 20)
    people[i] += friends

# 工作阶段
for i in range(num_people):
    num_jobs = np.random.choice([3, 4, 2, 1, np.random.randint(5, 9), 0], p=[0.4, 0.2, 0.2, 0.1, 0.05, 0.05])

    for m in range(num_jobs):
        friends =generate_random_number(120,40,180)
        #friends = np.random.randint(40, 161)  # 工作上的朋友、邻居、亲戚
        people[i] += friends

# 退休阶段
for i in range(num_people):
    friends = generate_random_number(60,30,70)
    #friends = np.random.randint(30, 71)  # 退休生活上的老朋友,亲戚,年轻人
    people[i] += friends

# 排名和平均数
#rank = np.argsort(-people) + 1  # 按照从高到低排序,并将索引转换为排名(从1开始)
rank = np.argsort(people)[::-1]
average = np.mean(people)

for i in rank:
    print("Rank {}: {}".format(i + 1, people[i]))

# 打印结果
print("Average number of people known:", average)

# 画图
plt.figure()
plt.hist(people, bins=20)
plt.title('Distribution of Number of People Known')
plt.xlabel('Number of People Known')
plt.ylabel('Frequency')
plt.show()

4.运行结果

我们看到遇到人数的排名:

Rank 4263: 1551.0
Rank 2190: 1545.0
Rank 5038: 1533.0
Rank 9674: 1517.0
Rank 7863: 1515.0
Rank 5988: 1514.0
Rank 569: 1514.0
Rank 973: 1512.0
Rank 9469: 1512.0
Rank 6025: 1511.0
Rank 2429: 1506.0
Rank 9857: 1504.0
Rank 4073: 1501.0
Rank 4721: 1500.0
Rank 9604: 1500.0
Rank 8893: 1497.0
Rank 6530: 1497.0
Rank 7289: 1496.0
Rank 6069: 1490.0
Rank 5171: 1488.0
Rank 1414: 1469.0
Rank 4347: 1420.0
Rank 1091: 1408.0
Rank 9573: 1406.0
Rank 1321: 1402.0
Rank 7111: 1401.0
Rank 5332: 1401.0
Rank 5681: 1400.0
Rank 4972: 1399.0
Rank 2777: 1397.0
Rank 1433: 1396.0
Rank 686: 1396.0
Rank 7207: 1396.0
Rank 7374: 1395.0
Rank 7938: 1395.0
Rank 3329: 1394.0
Rank 9229: 1392.0
Rank 7709: 1391.0
Rank 3458: 1390.0
Rank 5074: 1390.0
Rank 9244: 1386.0
Rank 727: 1386.0
Rank 7791: 1385.0
Rank 1668: 1384.0
Rank 5889: 1384.0
Rank 9352: 1383.0
...

以下是认识的人数分布图:
在这里插入图片描述
根据以上结果,每个人平均一生中真正会认识约775人,但是这个只是简单的模型预测,实际生活中可能会认识更多的人,也有相对内向的人可能认识的人就很少。
模型中认识人数最多的是1551人,这个表示真正有打交道的人,而不是一面之缘。

5.总结

在我们一生中,我们会认识许多人,我们要用心对待每一个我们遇到的人,因为他们都有可能成为我们人生中的那个特别的人。虽然这个特别的人的出现概率较低,但如果我们保持开放和善良的态度,我们就有更大的机会遇到他们。

但是真正能够陪伴我们走到最后的人却是非常罕见的。这个人可能是我们的伴侣,我们的挚爱。 数据告诉我们要懂得珍惜身边的人和与他们建立深厚的关系,我们要学会感恩,并且尽力去维护和培养那些与我们心灵相通、能够在困难时刻给予支持和理解的人际关系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/948389.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ZooKeeper的典型应用场景及实现

文章目录 1、典型应用场景及实现1.1、 数据发布/订阅1.1.1、配置管理案列 1.2、负载均衡1.3、命名服务1.4、分布式协调/通知1.4.1、一种通用的分布式系统机器间通信方式 1.5、集群管理1.6、Master选举1.7、分布式锁1.7.1、排他锁1.7.2、共享锁 1.8、分布式队列 2、ZooKeeper在大…

【LeetCode每日一题】——274.H指数

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 排序 二【题目难度】 中等 三【题目编号】 274.H指数 四【题目描述】 给你一个整数数组 ci…

ReID网络:MGN网络(3) - 数据组织

1. 概述 首先ReID不仅仅可以搞行人&#xff0c;当然也可以处理其他目标&#xff0c;这个是大家需要领会的一点。 用于ReID的行人数据集&#xff0c;一般是有多段同一目标在不同时间的采样序列组成。例如同一个行人&#xff0c;间隔5秒采集一张图像&#xff0c;连续采集30张。…

Swift 中的动态成员查找

文章目录 前言基础介绍基础示例1. 定义一个动态成员访问类&#xff1a;2. 访问嵌套动态成员&#xff1a; 使用 KeyPath 的编译时安全性KeyPath 用法示例KeyPath 进阶使用示例1. 动态访问属性&#xff1a;2. 结合可选属性和 KeyPath&#xff1a;3. 动态 KeyPath 和字典&#xff…

使用calc()调整元素高度或宽度

<style>.parent { display: flex;padding: 0px 5px;width: 600px;height: 200px;background: #ccc;}.children { margin: 10px 10px;/* 减去padding和margin */height: calc(100% - 20px);width: calc(100% - 30px);background: skyblue;}</style><div class&qu…

嵌入式Linux开发实操(十四):SPI接口开发

# 前言 SPI(Serial Peripheral Interface)同UART、I2C、CAN等一样,是MCU/SOC的重要接口,没错,它是个通讯接口,一个串行通讯接口,我们想到了四线接口(CS、CLK、MOSI、MISO) 可以通过CS(ChipSelect)或者SS (Slave Select)线来选择和哪个SPI设备通信,选择就是把这条线…

无涯教程-Android - Linear Layout函数

Android LinearLayout是一个视图组&#xff0c;该视图组将垂直或水平的所有子级对齐。 Linear Layout - 属性 以下是LinearLayout特有的重要属性- Sr.NoAttribute & 描述1 android:id 这是唯一标识布局的ID。 2 android:baselineAligned 此值必须是布尔值&#xff0c;为…

Java中ArrayList.remove(index)漏删的问题

问题描述 ArrayList中数据删除漏删 测试代码如下 public static void main(String[] args) {List<Integer> list new ArrayList<>();for(int i0;i<10;i){list.add(i1);}System.out.println("删除前&#xff1a;list.szie() "list.size());for(i…

什么是跨域问题 ?Spring MVC 如何解决跨域问题 ?

1. 什么是跨域问题 &#xff1f; 跨域问题指的是不同站点之间&#xff0c;使用 ajax 无法相互调用的问题。 跨域问题的 3 种情况&#xff1a; 1. 协议不同&#xff0c;例如 http 和 https&#xff1b; http://127.0.0.1:8080https://127.0.0.1:8080 2. 域名不同&#xff1…

在springboot项目中显示Services面板的方法

文章目录 前言方法一&#xff1a;Alt8快捷键方法二&#xff1a;使用Component标签总结 前言 在一个springboot项目中&#xff0c;通过开启Services面板&#xff0c;可以快速的启动、配置、管理多个子项目。 方法一&#xff1a;Alt8快捷键 1、在idea界面输入Alt8&#xff0c;在…

非科班菜鸡算法学习记录 | 代码随想录算法训练营第50天|| 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV

123. 买卖股票的最佳时机III 123. Best Time to Buy and Sell Stock III(英文力扣连接) 知识点&#xff1a;动规 状态&#xff1a;看思路ok 思路&#xff1a; 跟之前股票思路一样&#xff0c;多定义几个状态&#xff0c;此题要买两次&#xff0c;所以算上不操作一共有五个状态…

软件测试案例 | 气象探测库存管理系统的集成测试计划

将经过单元测试的模块按照设计要求连接起来&#xff0c;组成规定的软件系统的过程被称为“集成”。集成测试也被称为组装测试、联合测试、子系统测试或部件测试等&#xff0c;其主要用于检查各个软件单元之间的接口是否正确。集成测试同时也是单元测试的逻辑扩展&#xff0c;即…

聊聊手机导航软件

目录 1.人在外地没有导航的后果 2.传统导航方式 3.手机软件导航的原理 4.手机导航的优点 1.人在外地没有导航的后果 在外地没有导航的情况下&#xff0c;可能会带来以下一些后果&#xff1a; 1. 容易迷路&#xff1a;没有导航指引的情况下&#xff0c;你可能会走错路线&…

常见前端面试之VUE面试题汇总十三

39. Vue 中 key 的作用 vue 中 key 值的作用可以分为两种情况来考虑&#xff1a; 第一种情况是 v-if 中使用 key。由于 Vue 会尽可能高效地渲染元 素&#xff0c;通常会复用已有元素而不是从头开始渲染。因此当使用 v-if 来 实现元素切换的时候&#xff0c;如果切换前后含有相…

普里戈任或持有近10万个比特币

来源&#xff1a;Beincrypto 作者&#xff1a;David Thomas 编译&#xff1a;Shelby 摘要&#xff1a; 一个持有26 亿美元的比特币钱包已被确定可能与俄罗斯军事承包商有联系。 虽是猜测&#xff0c;但据报道「叶夫根尼普里戈任」的不正规商业行为可能受益于比特币的匿名性功能…

中国应试教育市场:挑战与机遇并存,金榜状元引领前行

2023年全国高考报名人数1291万人再次刷新历史纪录&#xff0c;但一本的录取率仅为23%&#xff1b;教育部2021年开始推行中考分流政策&#xff0c;只有约为50%初中毕业生可以升入普通高中&#xff1b;“双减”政策的推行&#xff0c;使得高考升学的压力提前到中考阶段&#xff0…

ATFX汇市:美元指数已连续六周收阳,需警惕超买风险

ATFX汇市&#xff1a;7月14日当周&#xff0c;因为6月份爆冷的非农就业报告&#xff0c;美元指数大跌2.26%。奇怪的是&#xff0c;在此之后&#xff0c;美元指数进入超强牛市状态。截至上周&#xff0c;已经连续6周收出阳K线&#xff0c;累计涨幅达4.24%&#xff0c;最高触及10…

CI/CD 持续集成 持续交付

CI&#xff08;Continuous integration&#xff09;持续集成 参考&#xff1a;https://www.jianshu.com/p/2132949ff84a 持续集成是指多名开发者在开发不同功能代码的过程当中&#xff0c;可以频繁的将代码行合并到一起并切相互不影响工作。 持续集成的目的&#xff0c;是让…

多店铺智能客服,助力店铺销量倍增

近年来电商发展得非常快速&#xff0c;市场竞争也是愈发激烈了。商家不仅需要提高产品和服务的质量&#xff0c;还要争取为自己获取更多的曝光&#xff0c;以此来分散运营的风险和降低经营的成本&#xff0c;所以越来越多的商家也开始转向多平台多店铺运营。但即使运营多个平台…

Shiro整合SpringBoot,实战下的应用场景

文章目录 前言一、springBootshiro环境准备1.数据库2.ssmp环境搭建3.实体类4.三层搭建5.初始化测试数据 二、Shiro过滤器1.Shiro认证过滤器2.Shiro授权过滤器 三、springBootshiro身份认证1.创建Realm,重写认证方法doGetAuthenticationInfo2.创建shiro配置类3.Postman测试 四、…