Algum tempo atrás, usei uma ferramenta do tipo seq para imprimir uma sequência de números gerados pseudo-aleatórios no stdout. Você pode especificar um intervalo, semente e o número de amostras e muito mais.
Acabei de esquecer o nome desta ferramenta. Alguém pode me ajudar?
Talvez você conheça ainda uma ferramenta mais avançada que, por exemplo, suporta distribuições de probabilidade diferentes ou mesmo a geração de uma sequência de palavras aleatórias sob diferentes alfabetos e distribuições de comprimento / caractere.
shell
command-line
maxschlepzig
fonte
fonte
Se você não se importa em escrever um script pequeno para fazer o que precisa, recomendo fazê-lo no R , o sistema de estatísticas de código aberto.
Por exemplo, considere esta linha para obter uma lista de 100 números distribuídos gaussianos:
Vamos quebrar isso.
O
R
comando padrão leva você a um ambiente de programação interativo, o que é bom se você estiver tentando descobrir como fazer algo manualmente ou criando algo incrementalmente, mas a partir da sua pergunta, parece que você só precisa de uma lista de números para enviar para outro programa. Então, em vez disso, usamos oRscript
que se comporta mais como um interpretador de script tradicional do Unix: você pode passar o nome de um arquivo contendo um script R ou usar o-e
sinalizador padrão para passar todo o texto do programa na linha de comando.rnorm()
é a função R para obter uma lista de números aleatórios com a distribuição "normal" ou gaussiana. São necessários até três parâmetros, apenas o primeiro, quantos números você deseja. Pedimos 100. Ao aceitar os padrões dos outros dois parâmetros opcionais, obtemos uma média de 0 e um desvio padrão de 1.A aritmética depois disso está apenas mostrando um recurso interessante da linguagem R: você pode fazer aritmética em tabelas de dados inteiras, matrizes, etc., tão facilmente quanto um valor escalar em uma linguagem mais típica. Multipliquei todos os valores gerados por 100 e adicionei 100 a eles, apenas porque posso. Como R é uma linguagem de programação completa, não há limite para o que você poderia fazer com esta lista de números. Essa é a vantagem de usar esse sistema em vez de um comando de finalidade fixa, como
jot
.Passamos o resultado dessa operação anterior para a
write()
função, que grava os dados em um arquivo por padrão, mas substituímos isso ao passar uma string em branco para o segundo parâmetro, o nome do arquivo, para que ele grave a tabela em o terminal. O próximo parâmetro,1
diz apenas que queremos nossa saída no formato de coluna única.R tem muitas outras funções de geração de número aleatório incorporadas ao sistema base. Por exemplo, podemos imitar o
jot
comando na resposta de lcpriani com este script:Aqui estamos usando
runif()
para obter 10 números aleatórios distribuídos uniformemente de 12 a 27. Assimrnorm()
como usamos acima, essa função retorna valores de ponto flutuante; portanto, precisamosround()
deles com seus valores inteiros mais próximos antes de gravá-los na tela.O R também possui um rico conjunto de complementos no CRAN , um repositório de pacotes modelado no CPAN do Perl. Uma pessoa em que você pode se interessar é simplesmente chamada aleatória , que funciona como uma interface para o random.org , um serviço que retorna números aleatórios verdadeiros gerados a partir do ruído atmosférico.
R é um ambiente de programação completo, portanto, pode ser que você não precise realmente tirar R de números em formato de texto. Você pode resolver seu problema inteiramente em R. Experimente.
fonte
jot
comando lcpriani na resposta acima. Quanto à limitação de valores pararnorm()
, não é assim que a distribuição normal funciona. Se você usar a média padrão de 0 e o SD de 1, 1000 ainda é um possível valor de retorno, é extremamente improvável. R permitiria que você escrevesse algo que restringisse os valores para remover coisas fora de um determinado intervalo, mas provavelmente você usaria mal a distribuição normal.