Hace algún tiempo, utilicé una herramienta de tipo seq para imprimir una secuencia de números generados seudoaleatorios para stdout. Puede especificar un rango, semilla y el número de muestras y mucho más.
Acabo de olvidar el nombre de esta herramienta. ¿Puede alguien ayudarme?
Quizás conozca incluso una herramienta más avanzada que, por ejemplo, admite diferentes distribuciones de probabilidad o incluso la generación de una secuencia de palabras aleatorias bajo diferentes alfabetos y distribuciones de longitud / carácter.
shell
command-line
maxschlepzig
fuente
fuente
Si no le importa escribir un pequeño script para hacer lo que necesita, le recomiendo hacerlo en R , el sistema de estadísticas de código abierto.
Por ejemplo, considere esta línea para obtener una lista de 100 números distribuidos en Gauss:
Analicemos esto.
El
R
comando estándar lo lleva a un entorno de programación interactivo, lo cual está bien si está tratando de averiguar cómo hacer algo a mano o si está creando algo de forma incremental, pero a partir de su pregunta, parece que solo necesita una lista de números para enviar a otro programa. Entonces, en su lugar, utilizamosRscript
, que se comporta más como un intérprete de script tradicional de Unix: puede pasarle el nombre de un archivo que contiene un script R, o usar la-e
bandera estándar para pasar todo el texto del programa en la línea de comando.rnorm()
es la función R para obtener una lista de números aleatorios con la distribución "normal" o gaussiana. Se necesitan hasta tres parámetros, solo el primero de los cuales es necesario, cuántos números desea. Hemos pedido 100. Al tomar los valores predeterminados para los otros dos parámetros opcionales, obtenemos una media de 0 y una desviación estándar de 1.La aritmética después de eso solo muestra una característica interesante del lenguaje R: puede hacer aritmética en tablas de datos completas, matrices, etc., tan fácilmente como un valor escalar en un lenguaje más típico. Multipliqué todos los valores generados por 100 y les agregué 100, solo porque puedo. Debido a que R es un lenguaje de programación completo, no hay límite para las cosas que podría hacer con esta lista de números. Esa es la ventaja de usar dicho sistema en lugar de un comando de propósito fijo como
jot
.Pasamos el resultado de esa operación anterior a la
write()
función, que escribe los datos en un archivo de forma predeterminada, pero lo hemos anulado al pasar una cadena en blanco para el segundo parámetro, el nombre del archivo, por lo que escribe la tabla en la terminal en su lugar. El siguiente parámetro,1
simplemente le dice que queremos nuestra salida en formato de columna única.R tiene muchas otras funciones de generación de números aleatorios integradas en el sistema base. Por ejemplo, podemos imitar el
jot
comando en la respuesta de lcpriani con este script:Aquí estamos usando
runif()
para obtener 10 números aleatorios distribuidos uniformemente del 12 al 27. Comornorm()
, que usamos anteriormente, esta función devuelve valores de punto flotante, por lo que tenemos queround()
obtener sus valores enteros más cercanos antes de escribirlos en la pantalla.R también tiene un rico conjunto de complementos en CRAN , un repositorio de paquetes modelado en el CPAN de Perl. Uno en el que podría estar interesado simplemente se llama aleatorio , que actúa como una interfaz para random.org , un servicio que devuelve verdaderos números aleatorios generados por el ruido atmosférico.
R es un entorno de programación completo, por lo que es posible que no necesite sacar sus números de R en formato de texto. Es posible que pueda resolver su problema por completo en R. Inténtelo.
fuente
jot
comando de lcpriani a la respuesta anterior. En cuanto a los valores límite pararnorm()
, esa no es la forma en que funciona la distribución normal. Si toma la media predeterminada de 0 y SD de 1, 1000 sigue siendo un posible valor de retorno, es muy poco probable. R le permitiría escribir algo que sujete los valores para eliminar cosas fuera de un rango dado, pero entonces probablemente estaría haciendo un mal uso de la distribución normal.