Introducción

1

Programación Dinámica y Estocástica: Optimización y Modelado de Datos

Programación Dinámica

2

Programación Dinámica: Optimización de Problemas con Memorización

3

Optimización de Algoritmos con Programación Dinámica en Python

Caminos Aleatorios

4

Simulaciones con Caminos Aleatorios en Programación

5

Camino Aleatorio en Programación Orientada a Objetos

6

Algoritmo de Caminata Aleatoria en Python: Clase Borracho

7

Simulación de Caminata Aleatoria con Python

8

Visualización de Caminatas Aleatorias con Python y Bokeh

Programas Estocásticos

9

Programación Estocástica: Aplicaciones y Ejemplos Prácticos

10

Cálculo de Probabilidades y Simulación de Montecarlo

11

Simulaciones de Probabilidades con Dados en Python

12

Inferencia Estadística: Conceptos y Aplicaciones Prácticas

13

Cálculo de la Media Aritmética en Python paso a paso

14

Media, Varianza y Desviación Estándar en Estadística

15

Distribución Normal: Propiedades y Aplicaciones Estadísticas

Simulaciones de Montecarlo

16

Simulaciones de Montecarlo: Historia y Aplicaciones Prácticas

17

Simulación de Montecarlo para Probabilidades en Juegos de Cartas

18

Simulaciones de Montecarlo para Aproximar Pi

19

Estimación de Pi mediante Monte Carlo y Simulación Estadística

Muestreo e Intervalos de Confianza

20

Muestreo Estadístico: Aleatorio y Estratificado

21

Teorema del Límite Central: Transformación de Distribuciones

Datos Experimentales

22

Validación de teorías científicas con datos experimentales

23

Regresión Lineal con NumPy y Matplotlib en Google Colab

Conclusiones

24

Optimización de Programas con Programación Dinámica y Simulaciones

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Cálculo de la Media Aritmética en Python paso a paso

13/24
Recursos

¿Cómo se calcula la media en estadística?

Calcular la media es un paso fundamental en la inferencia estadística, ya que es una medida de tendencia central que ayuda a comprender dónde se encuentra la mayoría de los valores en una muestra o población. La media de la población se conoce comúnmente como $\mu$ (muy), mientras que la media de la muestra se representa con $\bar{x}$ (x barra).

Para calcular la media:

  1. Suma todos los valores en un conjunto.
  2. Divide esa suma por el número total de valores.

Por ejemplo, si tienes tres calificaciones: 10, 9 y 8, la suma es 27. Dividimos esta suma por 3 (el número total de calificaciones), lo que resulta en una media de 9. En términos matemáticos, la fórmula se representa como:

[ \bar{x} = \frac{\sum x_i}{n} ]

Donde:

  • (\sum x_i) es la suma de todos los valores.
  • (n) es el número total de valores.

¿Cómo implementar la media en Python?

La implementación del cálculo de la media en Python es sencilla y se puede realizar con pocas líneas de código. Aquí te mostramos cómo se puede hacer:

def calcular_media(X):
    return sum(X) / len(X)

¿Cómo utilizar esta función?

Para comprender mejor cómo usar esta función, veamos un ejemplo en el que se utiliza una lista de valores generada aleatoriamente.

import random

if __name__ == "__main__":
    # Generamos una lista aleatoria de 20 números entre 1 y 20
    X = [random.randint(1, 20) for _ in range(20)]
    
    # Calculamos la media
    media = calcular_media(X)
    
    # Mostramos la lista y su media
    print("Lista:", X)
    print("Media:", media)

Al ejecutar este fragmento de código, obtendrás una lista aleatoria de números junto con su media. Cada ejecución puede generar diferentes resultados debido al uso de números aleatorios.

¿Qué ventajas ofrece comprender el cálculo de la media?

Conocer cómo calcular la media con funciones en Python no solo es una habilidad crucial para la programación y análisis de datos, sino que también te proporciona las herramientas para comprender y aplicar conocimientos matemáticos directamente en el código. Este enfoque te ayudará a:

  • Mejorar la habilidad analítica al realizar análisis de datos más comprensivos.
  • Facilitar la ejecución de técnicas estadísticas que requieren cálculos de tendencia central.
  • Aplicar matemática en programación de manera efectiva, superando el miedo a la notación matemática y aprendiendo a usarla de forma práctica.

Nunca dudes en explorar más allá, profundizar en el análisis estadístico y seguir mejorando tus habilidades en programación para sacar el máximo provecho de los datos que manejas. ¡Continúa aprendiendo y no temas a los números!

Aportes 84

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

También se puede hacer importando “statistics” para utilizar la función “mean”

import random
import statistics

if __name__ == '__main__':

    edades = [random.randint(1,35) for i in range (20)]
    print(edades)
    print(statistics.mean(edades))

Matemáticas + Programación = Felicidad!!! =)

Using Numpy

import numpy as np 

if __name__ == "__main__":
    X = np.random.randint(1 , 21 , size=20)
    mu = np.mean(X)
    print(X)
    print(mu)

sin ver la clase, intenté hacerlo con lo que sabía como reto personal, acá lo comparto, si tienen sugerencias, por favor haganmelas saber.

import random

def media(cajon):
    return sum(cajon) / len(cajon)

def X(lista):
    cajon = []

    for i in range(lista):
        cajon.append(random.randint(0,100))
        print(cajon)
    return cajon


if __name__ == '__main__':
    lista = int(input('cuantos numeros?'))
    cajon = X(lista)
    media = media(cajon)
    print(f' esta es la media {media}')


Descubrí que se pueden crear variables en Python con caracteres especiales:

import random

def media(X):
    return sum(X) / len(X)

if __name__ == '__main__':
    X = [ random.randint(1, 21) for i in range(20) ]
    µ = media(X) #Aqui
    print(X)
    print(f'Media: {µ}')

Vídeo del canal de YouTube Derivando que habla sobre:

Me fascina la aplicación y gran utilidad de las matemáticas en este campo, es simplemente increíble!

No sé si al momento de grabar el vídeo, los rangos de random.randint() no incluían el último valor, pero en la versión actual de python sí están incluidos ambos extremos.

Esto lo pueden validar en cuadro de sugerencias que muestra VSC:

Sorprendente el poder de Python, con unas cuantas lineas se hace lo que en otros lenguajes serian muchas mas lineas.

import random

def media(X):
    return sum(X) / len(X)

if __name__ == "__main__":
    X = [random.randint(1, 21) for i in range(20)]
    print(f'El promedio es {media(X)}.')

https://github.com/karlbehrensg/programacion-dinamica-y-estocastica
Media

La media es una medida de tendencia central, comúnmente conocido como promedio. La media de una población se denota con el símbolo μ y la media de una muestra se define con X̄.

Una forma de calcular la media con Python seria la siguiente.

import random

def media(X):
    return sum(X) / len(X)

if __name__ == '__main__':
    X = [random.randint(9, 12) for i in range(20)]
    mu = media(X)

    print(f'Arreglo X: {X}')
    print(f'Media = {mu}')

Se entienden mejor los conceptos cuando se entiende la notación y se han realizado las operaciones, no desdeñen las matemáticas. Es preferible entenderlas de fondo y forma y no por ‘encimita’, es verdad que no se convertiran en matemáticos pero en nada estorba saber las cosas a profundidad. A veces noto en los cursos que le indican a la gente que no es importante saber los símbolos y las operaciones, pero ese es un error. Creo que hay que darle la importancia que merecen e indicarle a la gente que vaya a buscar información. No es queja, simplemente que creo que todas las áreas son importantes y no desdeñar el conocimiento que libremente la gente puede poseer.

import random


def media(numbers):
    sum_numbers = 0
    for number in numbers:
        sum_numbers += number

    return sum_numbers / len(numbers)


if __name__ == '__main__':
    numbers = [random.randint(0, 100) for _ in range(100)]
    print(numbers)
    print(media(numbers))```

yo soy de las personas que hubieran hecho un loop for para calcular la media jajjaa

es una boludes yo no lo hice xd

La media es el promedio de un conjunto de números

Código:

Ejecución

Hola a todos, este programa que calcula la media lo hice antes de ver el video, lo comparto por si a alguien le sirve:

<def media(valores, cantida_elementos):
    suma = sum(valores)
    media = suma / cantida_elementos
    return media

if __name__ == '__main__':
    valores = [ ]

    print('Por favor introduce los elementos cuya media quieres calcular, pero si deseas salir escribe 1989')

    while True:
        numeros = int(input('introduce digito: '))
        valores.append(numeros)
        if numeros == 1989:
            valores.remove(1989)
            break
        
    
    
    cantidad_elementos = len(valores)
    print(f'la media de los valores introducidos es {media(valores, cantidad_elementos)}')>

Es muy importante además de la media, conocer la mediana que en ciertas ocasiones puede ser más acertado. Concretamente, se dice que cuando tenemos outliers en la muestra se puede usar la mediana y no desechar estos valores extremos, ya que, a diferencia de la media la mediana no se ve afectada por éstos.

Good Class"!

>>> def media(X: list()=[]) -> float():
...     return( sum(X) / len(X) )
... 

Definición Media.

Ojo!! random.randint(1,21) me da valores hasta el 21 inclusive

import random
def media(array):
    suma=0
    for i in array:
        suma+=i
    return float(suma/len(array))

if __name__ == '__main__':
    array=[]
    array_length = random.randint(1,50)
    print(array_length)
    for i in range(0,array_length):
        array.append(random.randint(0,50))
    print(array)

    print(media(array))
import random

def media(X):
    return sum(X) / len(X)

if __name__ == "__main__":
    X = [random.randint(1,21) for i in range(20)]
    mu = media(X)
    print(X)
    print(mu)

Muy fáci por lo bien explicado.

def media(X):
    return sum(X) / len (X)

if __name__ == "__main__":
    X = [random.randint(1,21) for i in range(20)]
    mu = media(X)

    print(X)
    print(mu)
```js import random def media(X): return sum(X) / len(X) if __name__ == "__main__": X = [random.randint(1, 21) for i in range(20)] mu = media(X) print(X) print(mu) ```import random def media(X):    return sum(X) / len(X) if \_\_name\_\_ == "\_\_main\_\_":    X = \[random.randint(1, 21) for i in range(20)]    mu = media(X)     print(X)    print(mu)
Hay que tener cuidado porque la media es un estadístico que puede ser sesgado por múltiples factores y por eso es que es bueno compararla con otros estadísticos de tendencia central.

Mi resumen de la clase 📝
En estadística la media es el promedio de un conjunto de valores. Obtener la media es el primer paso en el proceso de inferencia estadística, por lo cual se convierte en un punto fundamental en la estadística, incluso en la clase anterior se hizo mención de ella dentro de la fórmula de “La ley de los grandes números”.

  • Es una medida de tendencia central que nos dice donde se encuentra la mayoría de los valores de nuestra muestra, e infiere en determinar donde se encuentran la mayoría de los valores de la población objetivo.
  • µ representa la media de la población
  • representa la media de la muestra

Formula de la media


También podemos verla de la siguiente forma

Donde

  • n: Es el tamaño de la muestra
  • i: Es el indice donde se encuentra el elemento a sumar
  • xi: Elemento que se encuentra en el indice i
  • Σ: Simbolo de sumatoria

La formula se lee

La media es igual a la sumatoria de los elementos x desde el indice i hasta n, y ese resultado dividido entre n

😃

import random
import math
import statistics


def media(X):
    return sum(X) / len(X)


def varianza(X):
    mu = media(X)

    acumulador = 0
    for x in X:
        acumulador += (x - mu)**2

    return acumulador / len(X)


def desviacion_estandar(X):
    return math.sqrt(varianza(X))


if __name__ == '__main__':

    ###################################################
    X_20 = [random.randint(0, 10) for i in range(20)]
    mu_20 = media(X_20)
    Var_20 = varianza(X_20)
    sigma_20 = desviacion_estandar(X_20)

    #print(statistics.mean(X))

    #print(f'Arreglo X: {X_20}')
    print("""
Ejemplo de estadistica con un arreglo de 20 numeros""")
    print(f'Media = {mu_20}')
    print(f'Varianza = {Var_20}%')
    print(f'Desviacion estandar = {sigma_20}%')

    ###################################################
    X_200 = [random.randint(0, 10) for i in range(200)]
    mu_200 = media(X_200)
    Var_200 = varianza(X_200)
    sigma_200 = desviacion_estandar(X_200)

    #print(statistics.mean(X))

    #print(f'Arreglo X: {X_200}')
    print("""
Ejemplo de estadistica con un arreglo de 200 numeros""")
    print(f'Media = {mu_200}')
    print(f'Varianza = {Var_200}%')
    print(f'Desviacion estandar = {sigma_200}%')


    ###################################################
    X_2000 = [random.randint(0, 10) for i in range(2000)]
    mu_2000 = media(X_2000)
    Var_2000 = varianza(X_2000)
    sigma_2000 = desviacion_estandar(X_2000)

    #print(statistics.mean(X))

    #print(f'Arreglo X: {X_2000}')
    print("""
Ejemplo de estadistica con un arreglo de 2000 numeros""")
    print(f'Media = {mu_2000}')
    print(f'Varianza = {Var_2000}%')
    print(f'Desviacion estandar = {sigma_2000}%')

Me parece excelente que relacione y aterrice directamente los conceptos con la programación. Algo que falta mucho en la educación universitaria.

  • La media es aquel valor, que tendrían todos los eventos si en todos ellos el resultado hubiera sido el mismo.

  • Por este motivo, si Elon Musk vive en tu pais, inmediatamente tu ingreso per cápita anual se dispara.

Tambien, puede ser…

import scipy as sc
import random as rd

if __name__ == '__main__':
  X = [rd.randint(1,33) for _ in range(33)]
  mu = sc.mean(X)
  print(f' Lista: {X}\n Media: {mu}')

La media es una medida de tendencia central, comúnmente conocido como promedio. La media de una población se denota con el símbolo μ y la media de una muestra se define con X̄.

import numpy as np
X=[np.random.randint(1,10) for i in range(10)]
print(“X”,X)
print("="*10)
print(“media”, np.mean(X))

Cada vez que nosotros queramos comenzar nuestro script, debemos poner: if __name__ == "__main__": Pero esto, debido a que nosotros, no quisieramos que nuestros helper modules, se ejecuten cada vez que los importamos.

Dónde los matemáticos empiezan a contar en 1, los ingenieros comenzamos a contar en cero.

El promedio, se toma sumando todos los valores de una lista, para luego pasar a dividirla por la cantidad de elementos de la lista.

La media de una población de denota con la letra miu. Mientras que la media de una muestra se denota con la barra x o x bar.

Algo muy importante en estadística inferencial y algo que se toma como primer paso, es la media: El promedio de los valores. La media nos dá una medida de tendencia central, que es donde se encuentran la mayoría de los valores de nuestra muestra , lo que nos permite inferir en dónde se encuentran la mayoría de los valores de la población.

Otra forma de saca la media, digitando los valores por espacios:

def middle(x):
    return sum(x) / len(x)


if __name__ == '__main__':
    data = input().split()
    for i in range (0, len(data)):
        data[i] = int(data[i])

    x = data

    num = middle(x)
    print(num)

Que bueno poder acoplar estas herramientas desde el colegio, creo que todo el tema matemático, la simulación en física, los experimentos en química, tendrían una mejor proyección y comprensión.

Notas de la sesión 😄
Media.

  • El primer paso del proceso de la inferencia es calcular la media.
  • La media es el promedio de los valores, nos da una medida de tendencia central de los lados. La media de la población se denota con el símbolo $\mu$. La media de una muestra se denota como $\bar{X}$. Se define como:

$$\bar{X} = \frac{1}{n}\sum_{i=1}^nx_i = \frac{1}{n}(x_1 + x_2 + . . . +x_n)$$

  • En código:
import random

def media(X):
    return sum(X) / len(X)

if __name__ == '__main__':
     
    X = [random.randint(1, 21) for i in range(20)]
    mu = media(X)
    
    print(X, mu)

¡Hola Comunidad! En base a lo que dijo el profesor Aroesti (usar la función sum en vez de un bucle for), un compañero preguntó lo siguiente: ¿Qué seria mas eficiente, usar la función sum y len para calcular la media o uno diseñar el codigo con un for? Complementé la respuesta de otros compañeros y aprovecho para compartirla también como un aporte para los que les parece útil.
.
¿Qué seria mas eficiente, usar la función sum y len para calcular la media o uno diseñar el codigo con un for?
.
Siempre es recomendable utilizar las funciones built-in de Python, por ahí he leído algunos casos en los que no es así, pero son cosas peculiares que para nuestro nivel (al menos el mío que soy un novato), no son tan urgentes.
.
Pensé que sería bueno comparar el tiempo que tarda un bucle for con el tiempo que tarda la función sum para el caso de sumar una cantidad de enteros medianamente grande.
.
Aquí el código:

import timeit

lista_de_enteros = 100000
numero_de_ejecuciones = 100

def suma_con_bucle_for():
    sumatoria = 0
    for entero in range(lista_de_enteros):
        sumatoria += entero
    return sumatoria

def suma_con_funcion_sum():
    sumatoria = sum(range(lista_de_enteros))
    return sumatoria

print("Resultado [Aplicando bucle FOR]:\t", timeit.timeit(suma_con_bucle_for, number=numero_de_ejecuciones))
print("Resultado [Aplicando función SUM]:\t", timeit.timeit(suma_con_funcion_sum, number=numero_de_ejecuciones))

Algunos de los resultados de la ejecución son:

C:\xampp\python> python .\tiempo_sum_for.py 
Resultado[Aplicando bucle FOR]:         1.4340383
Resultado[Aplicando función SUM]:       0.7051774999999998
PSC:\xampp\python> python .\tiempo_sum_for.py
Resultado[Aplicando bucle FOR]:         1.4479794
Resultado[Aplicando función SUM]:       0.7081203000000003
PSC:\xampp\python> python .\tiempo_sum_for.py
Resultado[Aplicando bucle FOR]:         1.4863573
Resultado[Aplicando función SUM]:       0.7029200999999998

El resultado en cada ejecución siempre resulta en que: El tiempo que tarda el bucle for en sumar los valores es en promedio el doble al que tarda la función sum.
.
Obviamente esto varía de acuerdo a la cantidad de valores y cantidad de ejecuciones, yo estoy apuntando los valores que hice en mis ejemplos con mis valores plasmados en el código. Si utilizas valores diferentes, de preferencia elevados, verás variaciones, sin embargo se mantiene el hecho de que la función sum siempre será más rápida para generar el cálculo.
.
Esto se debe a que la función sum está implementada en C dentro del intérprete de Python, mientras que el bucle for debe ser interpretado y manejado con la lógica de objetos de Python. La explicación técnica detallada no la sé, o mejor dicho aún no la averiguo, pero estaré revisando y lo compartiré.
.
¡Saludos!

esto ya lo vimos en el curso de probabilidad y estadistica, por que lo repiten???

Entendido

import random
import statistics

def media(X):
    return sum(X) / len(X)

if __name__ == "__main__":
    X = [random.randint(1,1000) for i in range(1000)]
    mu = media(X)
    print(f'La media de la lista {X} es mu : {mu}')

    mu_fun = statistics.mean(X)
    print(f'La media de la lista (Import statistics) {X} es mu : {mu_fun}')

Excelente

Media en código.

media

*Media: medida de tendencia central, conocida como promedio.
N–>elementos en universo
n–>elementos en muestra

def media(X):
   return sum(x)/len(X)

Programación y Matemáticas, una gran combinación.

import random

def media(X):
return sum(X)/len(X)

if name == ‘main’:
X = [random.randint(1, 21) for i in range(20)]
mu = media(X)

print(X)
print(mu)

#estadisticas.py

import random
import math

def media(X):
    return sum(X) / len(X)


def varianza(X):
    mu = media(X)

    acumulador = 0
    for x in X:
        acumulador += (x - mu)**2

    return acumulador / len(X)


def desviacion_estandar(X):
    return math.sqrt(varianza(X))


if __name__ == '__main__':
    X = [random.randint(9, 12) for i in range(20)]
    mu = media(X)
    Var = varianza(X)
    sigma = desviacion_estandar(X)

    print(f'Arreglo X: {X}')
    print(f'Media = {mu}')
    print(f'Varianza = {Var}')
    print(f'Desviacion estandar = {sigma}')```
import random
import math

def media(X):
    return sum(X) / len(X)

def varianza(X):
    mu = media(X)

    acumulador = 0
    for x in X:
        acumulador += (x - mu)**2

    return acumulador / len(X)

def desvacionestandar(X):
    return math.sqrt(varianza)

if __name__ == '__main__':
    X = [random.randint(1, 21) for i in range(20) ]
    mu = media(X)
    Var = varianza(X)
    sigma = desvacionestandar(X)
    print(X)
    print(mu)
    print(Var)
    print(sigma)``` 
chicos no se xq me saltan 5000 errores

Creo que el codigo es bastante sencillo de entender porque el profesor lo hace sencillo de entender!
Incluso por la parte matematica, nunca me lo habían explicado de una manera tan clara!

Muy buena implementacion

La media o el promedio, es la medida de tendencia central más utilizada. por lo menos en los deportes, sobre todo en el el béisbol, uno de los indicadores de mayor importancia es el promedio de bateo. Que consiste en la cantidad hits conectados, entre la cantidad de veces al bate que tiene un jugador.

Que sencillo!!

The sock.

import random
def media (X):
    return sum(X)/len(X)

if __name__=='__main__':
    X=[random.randint(1,21) for i in range(20)]
    mu=media(X)

    print(X)
    print(mu)

Media:
Medida de tendencia central. Lo que significa que es el valor que se representa a los datos siendo el valor en torno al cual ‘giran’ nuestros datos.
La calculamos dividiendo la sumatoria de todos los valores entre la cantidad de estos

en trading es super importante el tema de las medias, tambien se usan mucho las medias exponenciale, para saber si estamos en una tendencia alcista o bajista

Ya comenzamos con los conceptos estadisticos.

Fue mi impresión o los números de este programa tienden a 10.

El promedio por si solo no aporta ningun dato relevante; me sienta muy mal que arrojen noticias de “los colombianos ganan $$$$ de sueldo en promedio”

por poner un ejemplo, si 1 persona gana $1.000.000 y otra gana $9.000.000, el promedio seria de $5.000.000

La realidad es que la gran mayoria de colombianos ganan muy poco y una gran minoria colombianos gana muchisimo más en comparación. Logrando que el promedio salga alto

hay que aprender a reconocer cuando nos es util la media (promedio) y cuando no nos aporta nada util el saberlo

Solo para complementar: $\mu$ es la media de una población cuya distribución de probabilidades no conocemos, y un estimador de ese primer momento es un promedio simple (hay muchos tipos de promedio, podado, ponderado) incluso la mediana podría ser mejor estimador de la media si la distribución es asimétrica o tipo poison. Leí en los comentarios lo frustrante que es ver el significado e importancia que le dan a la media, y hay estadísticos como los percentiles que pueden representar mucho mejor a varios grupos de la población (entiéndase por población en términos amplios, no se refiere sólo a personas), rangos intercuantiles, etc.

Buena idea el cambio de nombre del curso por algo más genérico.

Al final del día ambas derivan de la Programación Matemática (Dinámica)
Programación determinista
Programación probabilistica / estocástica

Calculo de la media utilizando ciclo for

import random

def media(arreglo):
    sumatoria = 0
    for i in range(len(arreglo)):
        sumatoria = arreglo[i] + sumatoria

    return sumatoria/len(arreglo)


if __name__ == "__main__":
    arreglo = [random.randint(1, 30) for i in range(2)]
    promedio = media(arreglo)


print(arreglo)
print(promedio)
# -*- coding: utf-8 -*-
import random as rd
import statistics as st

def mean1(X):
    return sum(X) / len(X)

# Using statistics module
def mean2(X):
    return st.mean(X)

if __name__ == '__main__':
    X = list(rd.randint(1, 20) for i in range(20))
    miu = mean2(X)
    print(miu)

Para que puedan apreciar cual es la diferencia entre una MEDIA MUESTRAL y una MEDIA POBLACIONAL hice este programa en donde se imprimen aleatoriamente edades de entre 1-80 años con una población de 10,000 personas. Ahí pueden jugar en modificar el tamaño de muestra y se darán cuenta que mientras más muestras tomen, más se acercará la media muestral a la poblacional (la “REAL”).
.
Aún así, no se necesitan tantas muestras para tener una buena estimación:
.

import random

def media (X):
    return sum(X) / len(X) #Tiene sentido 

if __name__ == "__main__": #Vamos a tener un archivo con helper
    X = [random.randint(1,80) for i in range (10000)]
    mu = media(X) #Este es LA MEDIA POBLACIONAL

    muestra = int (input('Selecciona un tamaño de la muestra: '))

    casilla_aleatoria = [] #Esto solo me genera numeros aleatorios de las CASILLAS de 0 al 2000 que NO se repitan
    i = 0
    while (i < muestra):
        aleatorio = random.randint(1,9999) #genero 2 numeros aleatorios que NO se repiten del 1-20
        if aleatorio not in casilla_aleatoria:
            casilla_aleatoria.append(aleatorio)
            i += 1

    muestra_aleatoria = []
    j = 0
    while (j < muestra):
        muestra_aleatoria.append(X[casilla_aleatoria[j]]) #Selecciona las EDADES de las personas en una CASILLA especifica
        j += 1

    X_barra = media(muestra_aleatoria)
    print (f'la media REAL de la población es {mu}')
    print (f'la media MUESTRAL de una inferencia con {muestra} muestras es de {X_barra}')```

La media no es la única medida de tendencia central. También están la moda y la mediana.
También existen tipos de media:
La media aritmética(La utilizada en esta clase)
La media geométrica

Excelente!

Algunas respuestas en este apartado:
¿Qué es la media?

Les comparto el programa que hice, realice unas modificaciones al programa del profesor, importe la librería statistics para utilizar la funcion “mean” que obtiene el promedio, así se puede verificar el cálculo de la media que estamos realizando.
Saludos

Desde hace años que uso Jupyter-Notebook, es mi herramienta principal si se habla de manipulación de datos con y sin uso de framworks (como pandas, numpy, tensorFlow, entre otros).

Hola a todos, he hecho una simulacion de la ruleta de un casino y aqui os dejo el codigo por si a alguien le sirve, si creeis que puedo hacer alguna mejora por favor decidmelo, este es el codigo:

<import random

class Ruleta:
    def __init__(self, rojo, negro, cero):
        self.rojo = rojo
        self.negro = negro
        self.cero = cero

    def simulacion(self, simulaciones):
        lista = [ ]

        for _ in range(18):
            lista.append(self.rojo)

        for _ in range(18):
            lista.append(self.negro)

        lista.append(self.cero)

        #rojos = lista.count(self.rojo)
        #negros = lista.count(self.negro)
        #ceros = lista.count(self.cero)

        paso = 1
        lista_aleatoria = [ ]

        while paso <= simulaciones:
            lista_aleatoria.append(random.choice(lista))
            paso += 1

        rojo_contar = lista_aleatoria.count(self.rojo)
        probabilidad_rojo = rojo_contar / simulaciones 

        negro_contar = lista_aleatoria.count(self.negro)
        probabilidad_negro = negro_contar / simulaciones

        cero_contar = lista_aleatoria.count(self.cero)
        probabilidad_cero = cero_contar / simulaciones

        print(f'{self.rojo} ha salido {rojo_contar} veces, y su probabilidad es {probabilidad_rojo}')
        print(f'{self.negro} ha salido {negro_contar} veces, y su probabilidad es {probabilidad_negro}')
        print(f'{self.cero} ha salido {cero_contar} veces, y su probabilidad es {probabilidad_cero}')
        #print(f'en la lista hay {rojos} rojos, {negros} negros y {ceros} ceros')


if __name__ == '__main__':
    
    ruleta = Ruleta('rojo','negro','cero')
    simulaciones = int(input('cuantas veces quieres simular la simulacion?? '))
    ruleta.simulacion(simulaciones)
>
import numpy as np
import random

if __name__ == '__main__':
    
    X = [random.randint(1, 21) for I in range(20)]
    mu = np.mean(X) #Se recomienda hacer cast list -> np.array

    print(X)
    print(mu)

Codigo.


import random

def media(x):
    return sum(x) / len(x)

if __name__ == "__main__":
    x = [random.randint(1,21) for _ in range(20)]
    mu = media(x)
    print(f'La media de x = {x} es: {mu}')

Quise hacer una prueba, un poco obvia pero solo para probar la Ley de los grandes números, y es que la media de muchos números entre 0 y 20 es 10, y si le haces un calculo de mas de 10millones de pruebas te da 10,00xxxx decimales, si haces pocos siempre sera 9,96 y así, en fin, llegue a la conclusión que entre mas datos/pruebas de probabilidades mas exacto es

import random

def media(X):
    return sum(X) / len(X)

if __name__ == "__main__":
    X = [random.randint(0,20) for i in range(10000000)]
    mu = media(X)

    print(X)
    print(mu)```

excelente

Genial

imortando numpy as np. Puedes usar:
np.mean(X)

En mis clases de probabilidad y estadística, esa “equis barra” se llamaba X testada.

import random

#Aquí es donde va ir nuestro array
def media(X):
return sum(X) / len(X)

if name == ‘main’:
#Vamos a generar valores del 1-20
X = [random.randint(1, 21)for i in range(20) ]
#mu por que es el promedio total de una poblacíon
mu = media(X)
print(X)
print(mu)

Me molestaba ver los numeros en desorden asi que le meti el algoritmo de ordenamiento por ‘mezcla’

import os
import time
import random

def ordenamiento_mezcla(lista):
    if len(lista) > 1:
        medio = len(lista) // 2
        izquierda = lista[:medio]
        derecha = lista[medio:]

        ordenamiento_mezcla(izquierda)
        ordenamiento_mezcla(derecha)
        #iteradors de sublistas
        i = 0
        j = 0
        k = 0

        while i < len(izquierda) and j < len(derecha):
            if izquierda[i] < derecha[j]:
                lista[k] = izquierda[i]
                i += 1
            else:
                lista[k] = derecha[j]
                j += 1

            k += 1
        while i < len(izquierda):
            lista[k] = izquierda[i]
            i += 1
            k += 1

        while j < len(derecha):
            lista[k] = derecha[j]
            j += 1
            k += 1
    return lista

def media(x):
    return sum(x) / len(x)

if __name__ == '__main__':
    x = [random.randint(1,21) for i in range(20)]
    mu = media(x)
    print(x)
    lista_ordenada = ordenamiento_mezcla(x)
    print(lista_ordenada)
    print(mu)

    os.system('pause')