Discusión:El Manual de BASH Scripting Básico para Principiantes/Generando un numero aleatorio y enviandolo a una variable

De Wikilibros, la colección de libros de texto de contenido libre.
Ir a la navegación Ir a la búsqueda

Saludos, hay algunos detalles con el código sugerido.

1) Se hace uso de un programa externo (expr) para hacer una simple operación aritmética que se puede realizar directamente en el shell usando $((...))

2) El hacer un simple módulo genera resultados cargados, ya que RANDOM no es un generador de números aleatorios uniforme en toda la recta numérica, sino que genera solo del 0 al 32768. Imaginar esto con un dado:

Queremos generar números aleatorios del 1 al 5, así que usamos un dado (tiene 6 caras). Al usar módulo, efectivamente tomamos al 6 como un 1 (yo sé que no es así, pero favor de comprender, es más fácil de explicar así :) ). Entonces, tenemos las siguientes probabilidades:

  • 1: 2/6 (cara 1 y cara 6)
  • 2: 1/6 (cara 2)
  • 3: 1/6 ...
  • 4: 1/6
  • 5: 1/6

¿Qué podemos hacer? Si sale un seis, descartar ese tiro, y seguir tirando, esperando un número en el rango de 1-5.

Código de ejemplo: <http://sprunge.us/QFfF>. Nótese el tiempo que tarda la versión con expr contra la versión sin el mismo. Random tomado de: <http://mywiki.wooledge.org/BashFAQ/026> --Dualbus (discusión) 22:32 19 feb 2013 (UTC)