If you're seeing this message, it means we're having trouble loading external resources on our website.

Si estás detrás de un filtro de páginas web, por favor asegúrate de que los dominios *.kastatic.org y *.kasandbox.org estén desbloqueados.

Contenido principal

Distribución normal de números aleatorios

Digamos que queremos hacer ese programa que genera un mundo de monos. Tu programa podría generar mil objetos Monkey (de mono), cada uno con un valor de altura entre 200 y 300 (ya que este es un mundo de monos que tienen alturas entre 200 y 300 pixeles).
var randomHeight = random(200, 300);
¿Esto representa con precisión las alturas de los seres reales? Piensa en una acera concurrida en la ciudad de Nueva York. Elige a cualquier persona de la calle y puede parecer que su altura es aleatoria. Sin embargo, no es el tipo de aleatorio que random() produce. Las alturas de las personas no están uniformemente distribuidas; hay mucho más gente de altura promedio que gente muy alta o muy baja. Para simular la naturaleza, podemos querer que sea más probable que nuestros monos sean de altura promedio (250 pixeles), pero aún poderles permitir ser, en ocasiones, muy bajos o muy altos.
Una distribución de valores acumulados alrededor de un promedio (llamado la “media”) se conoce como una distribución “normal”. También se llama la distribución gaussiana (llamada así por el matemático Carl Friedrich Gauss) o, si eres francés, la distribución laplaciana (llamada así por Pierre-Simon Laplace). Ambos matemáticos estaban trabajando simultáneamente a principios del siglo XIX en definir tal distribución.
Cuando graficas la distribución, obtendrás algo que se ve como lo siguiente, informalmente conocido como una campana de Gauss:
Gráfica de una campana de Gauss estándar
Una campana de Gauss estándar
La curva es generada por una función matemática que define la probabilidad de que ocurra cualquier valor dado como una función de la media (a menudo escrito como μ, la letra griega mu) y la desviación estándar (σ, la letra griega sigma).
La media es bastante fácil de entender. En el caso de nuestros valores de altura entre 200 y 300, probablemente tengas un sentido intuitivo de la media (es decir, promedio) como 250. ¿Sin embargo, si dijera que la desviación estándar es 3 o 15? ¿Qué significa esto para los números? Mirar las gráficas puede darnos una pista. La gráfica anterior nos muestra la distribución con una desviación estándar muy baja , donde la mayoría de los valores se acumulan estrechamente alrededor de la media. La siguiente gráfica nos muestra una desviación estándar mayor, donde los valores están más uniformemente extendidos a partir de la media:
Gráfica de una campana de Gauss con una desviación estándar mayor
Una campana de Gauss con una desviación estándar mayor
No estás familiarizado con el concepto de "desviación estándar"?¡No te preocupes! Puedes estudiar Varianza y desviación estándar por separado en Khan Academy antes de continuar.
Los números resultan ser de la siguiente manera: dada una población, 68% de los miembros de esa población tendrán valores en el rango de una desviación estándar alrededor de la media, 95% dentro de dos desviaciones estándar y 99.7% dentro de tres desviaciones estándar. Dada una desviación estándar de 5 pixeles, solo 0.3% de las alturas de los monos serán menores de 235 pixeles (tres desviaciones estándar por debajo de la media de 250) o mayores que 265 pixeles (tres desviaciones estándar por encima de la media de 250).

Cálculo de la media y la desviación estándar
Considera un grupo de diez estudiantes que reciben las siguientes calificaciones (de un total de 100) en un examen:
85, 82, 88, 86, 85, 93, 98, 40, 73, 83
Calculamos la media (el promedio) al sumar todas las calificaciones y dividir entre el número de calificaciones.
Media = (85+82+88+86+85+93+98+40+73+83)/10=81.3
La desviación estándar se calcula como la raíz cuadrada del promedio de los cuadrados de las desviaciones alrededor de la media.
El primer paso es calcular la desviación para cada calificación (la diferencia de la media) y el cuadrado de la desviación:
CalificaciónDesviaciónDesviación al cuadrado
858581.3=3.7(3.7)2=13.69
828281.3=0.7(0.7)2=0.49
888881.3=6.7(6.7)2=44.89
868881.3=4.7(4.7)2=22.09
858581.3=3.7(3.7)2=13.69
939381.3=11.7(11.7)2=136.89
989881.3=16.7(16.7)2=278.89
404081.3=41.3(41.3)2=1705.69
737381.3=8.3(8.3)2=68.89
838381.3=1.7(1.7)2=2.89
Después calculamos el promedio de las desviaciones al cuadrado, que se conoce como la varianza. Esa es la suma de la última columna dividida entre el número de renglones:
Varianza = 2288.1/10 = 228.81
Por último, calculamos la desviación estándar al tomar la raíz cuadrada de la varianza:
Desviación estándar = 228.81 = 15.13.
¿Quieres entender mejor la desviación estándar? Puedes estudiar Varianza y desviación estándar con mayor profundidad aquí en Khan Academy.

Afortunadamente para nosotros, para utilizar una distribución normal de números aleatorios en un programa aquí, no tenemos que hacer ninguno de estos cálculos nosotros mismos. En cambio, podemos hacer uso del objeto Random proporcionado por ProcessingJS.
Para usar Random, primero debemos instanciar un nuevo objeto Random, pasándole 1 como parámetro. A esa variable la llamamos "generator" porque lo que creamos puede ser pensado básicamente como un generador de números aleatorios.
var generator = new Random(1);
Si queremos producir un número aleatorio con una distribución normal (o gaussiana) cada vez que ejecutemos draw(), es tan fácil como llamar a la función nextGaussian().
var num = generator.nextGaussian();
println(num);
Así que, ahora, ¿qué se supone que tenemos que hacer con este valor? ¿Qué pasa si quisiéramos utilizarlo, por ejemplo, para asignar la posición x de una figura que dibujamos en la pantalla?
La función nextGaussian() regresa una distribución normal de números aleatorios con los siguientes parámetros: una media de cero y una desviación estándar de uno. Digamos que queremos una media de 200 (el pixel horizontal central en una ventana de ancho 400) y una desviación estándar de 60 pixeles. Podemos ajustar el valor de nuestros parámetros al multiplicarlos por la desviación estándar y sumarles la media.
var standardDeviation = 60;
var mean = 200;
var x = standardDeviation * num + mean;
Ahora, podemos crear nuestro programa que dibuja círculos semitransparentes de acuerdo con una distribución normal. El lugar más oscuro estará cerca del centro, donde se acumula la mayor parte de valores, pero de vez en cuando se dibujan círculos más lejos hacia la derecha o izquierda del centro.

Este curso de "Simulaciones Naturales" es un derivado de "La Naturaleza del Código" por Daniel Shiffman, usado bajo una Licencia Creative Commons Reconocimiento-NoComercial 3.0 Unported.

¿Quieres unirte a la conversación?

  • Avatar blobby green style para el usuario azucenadelcid
    me podrian ayudar con el desafio caminata gaussiana, no comprendo que se debe hacer en el paso dos, es este:
    Walker.prototype.walk = function() {
    var xStepSize = ;
    var yStepSize = ;
    };
    Que es lo que va en el, ya intente varias formas e investigue pero no me sale, estaria agradecida si me ayudan, gracias
    (3 votos)
    Avatar Default Khan Academy avatar para el usuario
    • Avatar male robot hal style para el usuario Rubén Jiménez
      Tienes que hacer que cada coordenada de cada paso sea aleatoria, entonces lo que tienes que poner es

      generator.nextGaussian()*standardDeviation+mean

      e igualarlo a xStepSize y yStepSize dejando al principio la variable generator y las demás como mean... con los datos que dan

      var generator=new Random(1);
      var standardDeviation=2;
      var mean=0;
      (12 votos)
  • Avatar hopper cool style para el usuario azulito1
    me pueden ayudar en el proyecto salpicadura de pintura
    (3 votos)
    Avatar Default Khan Academy avatar para el usuario
¿Sabes inglés? Haz clic aquí para ver más discusiones en el sitio en inglés de Khan Academy.