Modélisation mathématique Python 1 - modèle de statistiques et analyse du nombre de personnes qui seront connues dans une vie simulée

Bonjour à tous, je m'appelle Weixue AI, et aujourd'hui je vous présenterai Python Mathematical Modeling 1 - modèle de statistiques et analyse du nombre de personnes qu'un humain connaîtra au cours de sa vie. Avez-vous compté combien de personnes avec lesquelles vous avez été en contact depuis la naissance jusqu'à maintenant, combien de personnes vous avez connues, peut-être que vous vous connaissez simplement, mais maintenant vous ne les contactez pratiquement plus, peut-être que vous ne contactez qu'un seul chiffre maintenant, dans Dans cette vie moderne bien remplie, la distance spatiale entre les gens est très éloignée. Aujourd'hui, je vais compter et construire un modèle pour voir combien de personnes nous connaîtrons au cours de notre vie ?

Contenu
1. Introduction générale
2. Description du modèle mathématique
3. Construction du modèle mathématique et implémentation du code
4. Résultats d'exécution
5. Résumé

1. Introduction générale

Nous rencontrerons toutes sortes de personnes dans notre vie. Avez-vous déjà compté combien de personnes nous connaîtrons dans cette vie ? Il y a 1,4 milliard de personnes en Chine, mais les personnes que nous connaissons autour de nous sont peut-être très peu nombreuses. Les personnes que nous Je sais vraiment que le nombre de personnes ne peut pas être calculé avec précision, car le cercle social et les relations interpersonnelles de chacun sont différents. Le nombre de personnes que nous connaissons peut varier de quelques dizaines à des milliers, selon notre profession, notre cadre de vie et nos activités sociales quotidiennes.

Parmi tant de personnes que nous connaissons, celles qui peuvent vraiment nous accompagner jusqu'au bout font généralement référence à des partenaires proches, des membres de la famille ou des amis très proches. Cette personne ne sera peut-être qu’une ou quelques-unes au cours de notre vie. Ils partagent nos joies et nos peines, soutiennent nos rêves et nous soutiennent et nous encouragent dans les moments difficiles. Ces personnes nous sont précieuses et cela vaut la peine de chérir et d’entretenir cette relation.

2. Description du modèle mathématique

Il existe désormais un modèle de société virtuelle. Dans ce modèle mathématique, 10 000 personnes constituent un échantillon d'individus : chacun peut connaître différentes personnes au cours de sa vie, et le classement du nombre de personnes qu'il connaît et du nombre moyen de personnes qu'il connaît après 80 ans. les années sont comptées. .

Condition modèle 1 : Au stade étudiant : tout le monde passera par les étapes de la maternelle, de l'école primaire, du collège, du lycée et de l'université, et certaines personnes sont encore en études supérieures et en doctorat. Nous les divisons en 8 : 2. , et 20 % d'entre eux étudient Pour les étudiants de troisième cycle et les médecins, chaque personne a 60 camarades de classe et 10 professeurs de diverses matières dans chaque section. 50 % de chaque personne aura 10 autres camarades de classe et bons amis, et 50 % aura 20 autres amis. .
Pendant la phase d'apprentissage des élèves, chaque personne aura au hasard 0 à 20 personnes qu'elle connaîtra de manière inattendue.

Condition modèle 2 : En phase de travail : 40 % des personnes ont 3 unités, 20 % des personnes ont 4 unités, 20 % des personnes ont 2 unités, 10 % des personnes ont 1 unité et 5 % des personnes ont plus de 5 unités. (respectivement 5 à 8 unités), 5 % des personnes n'ont aucune unité et chaque unité connaîtra au hasard 40 à 180 amis et partenaires de travail (il s'agit d'une répartition régulière de l'État).

Condition modèle 3 : Au stade de la retraite : tout le monde connaîtra au hasard 30 à 70 vieux amis, parents et jeunes retraités (il s'agit d'une distribution normale).

3. Construction de modèles mathématiques et implémentation de code

Nous allons construire un modèle avec 10 000 personnes, puis prédire le nombre de personnes que chaque personne a rencontrées, classer le nombre de personnes qu'elle a connues au cours de sa vie et compter le nombre moyen de personnes qu'elle connaît.

La distribution normale est utilisée dans le modèle, qui est une distribution de probabilité continue importante dans la théorie des probabilités et les statistiques, et est souvent appelée distribution gaussienne. Son principe mathématique peut s’exprimer de la manière suivante :

La fonction de densité de probabilité de la distribution normale peut être exprimée comme suit :

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 )=p14h _ 1e14 heures2( X μ )2

Parmi eux, xxx est la valeur de la variable aléatoire,μ \muμ est la moyenne,σ \sigmaσ est l'écart type.

La fonction de distribution cumulative de la distribution normale peut être exprimée comme suit :

F ( x ) = ∫ − ∞ xf ( t ) dt = 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 )d t=21[ 1+erf(p2 Xm) ]

Parmi eux, erf ( z ) \text{erf}(z)erf ( z ) est la fonction d'erreur.

Selon les propriétés de la distribution normale, environ 68 % des données correspondent à la valeur moyenne μ ± 1 \mu \pm 1m±1 écart typeσ \sigmaDans la plage de σ , environ 95 % des données se situent dans μ ± 2 σ \mu \pm 2\sigmam±Dans la plage de 2 σ , environ 99,7 % des données se situent dansμ ± 3 σ \mu \pm 3\sigmam±Plage . C'est ce qu'on appelle la règle 68-95-99,7 pour la distribution normale.

Voici le code implémenté :

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. Résultats en cours d'exécution

On voit le classement du nombre de rencontres :

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
...

Voici la répartition du nombre de personnes qui se connaissent :
insérer la description de l'image ici
D'après les résultats ci-dessus, chaque personne connaîtra en moyenne environ 775 personnes au cours de sa vie, mais il ne s'agit que d'une simple prédiction d'un modèle. Dans la vraie vie, ils peuvent connaître plus de gens, et certaines personnes relativement introverties peuvent les connaître. Il y a très peu de monde.
Le plus grand nombre de connaissances dans le modèle est de 1 551 personnes, ce qui signifie qu'il y a des personnes qui ont réellement des contacts, et pas seulement une relation unilatérale.

5. Résumé

Au cours de notre vie, nous rencontrerons de nombreuses personnes et nous devons traiter toutes les personnes que nous rencontrons avec cœur, car elles ont toutes le potentiel de devenir cette personne spéciale dans notre vie. Bien que les chances que cette personne spéciale apparaisse soient faibles, nous avons de meilleures chances de la rencontrer si nous gardons un cœur ouvert et gentil.

Mais les gens qui peuvent réellement nous accompagner jusqu’au bout sont très rares. Cette personne pourrait être notre partenaire, notre véritable amour. Les données nous disent de savoir comment chérir les gens qui nous entourent et construire des relations profondes avec eux. Nous devons apprendre à être reconnaissants et faire de notre mieux pour maintenir et cultiver ces relations qui sont liées à notre cœur et peuvent apporter soutien et compréhension dans temps difficiles.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_42878111/article/details/132580057
conseillé
Classement