Modelado matemático de Python 1: estadísticas del modelo y análisis de cuántas personas se conocerán en una vida simulada

Hola a todos, soy Weixue AI y hoy les traeré el modelado matemático de Python 1: estadísticas de modelos y análisis de cuántas personas conocerá un ser humano en su vida. ¿Has contado con cuántas personas has estado en contacto desde que naciste hasta el presente? ¿Cuántas personas has conocido? Tal vez solo se conocen entre sí, pero ahora básicamente no los contactas, tal vez solo contactas a un dígito ahora. En esta ajetreada vida moderna, la distancia espacial entre las personas se ha ampliado. Hoy contaré y construiré un modelo para ver ¿cuántas personas conoceremos en nuestra vida?

Contenido
1. Introducción a los antecedentes
2. Descripción del modelo matemático
3. Construcción del modelo matemático e implementación del código
4. Resultados de la ejecución
5. Resumen

1. Introducción a los antecedentes

Conoceremos a todo tipo de personas en nuestra vida. ¿Alguna vez has contado cuántas personas conoceremos en esta vida? Hay 1.400 millones de personas en China, pero las personas que conocemos a nuestro alrededor pueden ser muy pocas. Las personas que conocemos Realmente lo sé Es posible que no se pueda calcular el número exacto porque el círculo social y las relaciones de cada persona son diferentes. El número de personas que conocemos puede variar de decenas a miles, dependiendo de nuestra ocupación, entorno de vida y actividades sociales diarias.

Entre tanta gente que conocemos, quienes realmente pueden acompañarnos hasta el final suelen ser parejas cercanas, familiares o amigos muy cercanos. Esta persona puede ser sólo una o varias en nuestra vida. Comparten nuestras alegrías y tristezas, apoyan nuestros sueños y brindan apoyo y aliento en tiempos difíciles. Estas personas son valiosas para nosotros y vale la pena apreciar y mantener esta relación.

2. Descripción del modelo matemático

Ahora existe un modelo de sociedad virtual. En este modelo matemático, 10.000 personas son individuos de muestra: cada uno puede conocer a varias personas a lo largo de su vida, y la clasificación del número de personas que conoce y el número promedio de personas que conoce después de 80 se cuentan los años..

Condición modelo 1 : En la etapa de estudiante: todos pasarán por las etapas de jardín de infantes, escuela primaria, escuela secundaria, escuela secundaria y universidad, y algunas personas todavía están estudiando para estudiantes de posgrado y doctorado, los dividimos en 8: 2 , y el 20% de ellos están estudiando Para posgrados y médicos, cada persona tiene 60 compañeros y 10 profesores de diversas materias en cada sección, el 50% de cada persona tendrá otros 10 compañeros y buenos amigos, y el 50% tendrá otros 20 amigos y amigos.
Durante la etapa de aprendizaje del estudiante, cada persona tendrá aleatoriamente entre 0 y 20 personas que conocerá inesperadamente.

Condición del modelo 2 : En etapa de trabajo: el 40% de las personas tiene 3 unidades, el 20% de las personas tiene 4 unidades, el 20% de las personas tiene 2 unidades, el 10% de las personas tiene 1 unidad y el 5% de las personas tiene más de 5 unidades (respectivamente, 5 a 8 unidades), el 5% de las personas no tiene unidad y cada unidad conocerá aleatoriamente entre 40 y 180 amigos y socios en el trabajo (esta es una distribución estatal regular).

Condición del modelo 3 : En la etapa de jubilación: todos conocerán aleatoriamente entre 30 y 70 viejos amigos, parientes y jóvenes en la vida de jubilación (esta es una distribución normal).

3. Construcción de modelos matemáticos e implementación de código.

Construiremos un modelo con 10,000 personas y luego predeciremos la cantidad de personas que ha conocido cada persona, clasificaremos la cantidad de personas que ha conocido en su vida y contaremos la cantidad promedio de personas que conocen.

En el modelo se utiliza la distribución normal, que es una distribución de probabilidad continua importante en la teoría de la probabilidad y la estadística, y a menudo se denomina distribución gaussiana. Su principio matemático se puede expresar de la siguiente manera:

La función de densidad de probabilidad de la distribución normal se puede expresar como:

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 )=pag2 p.m. 1mi2p _2( x - μ )2

Entre ellos, xx.x es el valor de la variable aleatoria,μ \muμ es la media,σ \sigmaσ es la desviación estándar.

La función de distribución acumulada de la distribución normal se puede expresar como:

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(pag2 Xmetro) ]

Entre ellos, erf ( z ) \text{erf}(z)erf ( z ) es la función de error.

Según las propiedades de la distribución normal, aproximadamente el 68% de los datos caen en el valor medio μ ± 1 \mu \pm 1metro±1 desviación estándarσ \sigmaEn el rango de σ , aproximadamente el 95% de los datos caen dentro de μ ± 2 σ \mu \pm 2\sigmametro±En el rango de 2 σ , aproximadamente el 99,7 % de los datos se encuentran dentro deμ ± 3 σ \mu \pm 3\sigmametro±rango . Esto se conoce como regla 68-95-99,7 para la distribución normal.

Aquí está el código implementado:

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. Resultados de ejecución

Vemos el ranking del número de encuentros:

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

La siguiente es la distribución del número de personas que se conocen entre sí:
inserte la descripción de la imagen aquí
Según los resultados anteriores, cada persona conocerá a unas 775 personas a lo largo de su vida en promedio, pero esto es sólo una simple predicción del modelo. En la vida real, es posible que conozcan Más personas, y algunas personas relativamente introvertidas pueden conocerlos. Hay muy poca gente.
El mayor número de conocidos en el modelo es de 1551 personas, lo que significa que hay personas que realmente tienen contactos, no solo una relación unilateral.

5. Resumen

En nuestra vida conoceremos a muchas personas y debemos tratar a todos los que conocemos con corazón, porque todos tienen el potencial de convertirse en esa persona especial en nuestra vida. Si bien las probabilidades de que aparezca esa persona especial son bajas, tenemos más posibilidades de conocerla si mantenemos un corazón abierto y amable.

Pero son muy raras las personas que realmente pueden acompañarnos hasta el final. Esta persona podría ser nuestra pareja, nuestro verdadero amor. Los datos nos dicen que sepamos apreciar a las personas que nos rodean y construir relaciones profundas con ellas. Debemos aprender a ser agradecidos y hacer todo lo posible para mantener y cultivar aquellas relaciones que están conectadas con nuestro corazón y pueden brindar apoyo y comprensión en tiempos difíciles.

Supongo que te gusta

Origin blog.csdn.net/weixin_42878111/article/details/132580057
Recomendado
Clasificación