Pular para o conteúdo

Número aleatório de um range especificado [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Número aleatório de um range especificado [RESOLVIDO]

Enviado em 07/01/2013 - 16:41h

Caros,

Estou desenvolvendo um script de encriptação que substitui um caractare por um número aleatório com base em um range específico.
Ex.
"A" --> (1,2,3)
"B" --> (4,5,6)
Ou seja, o caractere "A" será substituído por 1 ou 2 ou 3

Minha dificuldade começa aí.

No tocante à geração de um número aleatório, em pesquisa ao google, e aqui no VOL, encontrei as seguintes soluções:

Usar a variável $RANDOM, mas esta possui um valor máximo limitado, e mesmo que eu queira limitar ainda mais (com Ex. var = $RANDOM%40), consigo apenas valores que comecem com 0 até o valor que eu especificar (Ex. 40)

Outra solução seria usar o comando cksum para gerar um valor pseudo aleatório
Ex.
$ date +%Y | cksum | cut -d " " -f1

Porém estas soluções não servem ao meu propósito, uma vez que eu quero um valor aleatório com base no range que eu especificar.

Para clarear, quero implementar em shell script uma função semelhante à função python randint(a,b)

"random.randint(a, b)
Return a random integer N such that a <= N <= b."

http://docs.python.org/2/library/random.html

Toda documentação, explicação, sugestão, etc será bem vinda

Obrigado

Responder tópico

2. Re: Número aleatório de um range especificado [RESOLVIDO]

Melhor resposta

Enviado em 07/01/2013 - 17:36h

Para gerar números aleatórios entre 20 e 50, faça algo como o que vai abaixo.

var=$(( $RANDOM%31 + 20 )) 
Por partes, $RANDOM%31 vai gerar uma sequência entre 0 e 30 (possíveis valores do resto de uma divisão por 31), e somar 20 fará com os valores de 0 a 30 passem para a faixa de 20 a 50.

3. Re: Número aleatório de um range especificado [RESOLVIDO]

Enviado em 07/01/2013 - 17:04h

O sort + seq não resolveria pra vc? É só números naturais, correto? Teste assim:


seq 1 10 | sort -R
O desafio ae é extrair dentre a faixa um dos números aleatórios.

4. Número aleatório de um range especificado [RESOLVIDO]

Enviado em 07/01/2013 - 17:44h

paulo1205 escreveu:

Para gerar números aleatórios entre 20 e 50, faça algo como o que vai abaixo.

var=$(( $RANDOM%31 + 20 )) 


Por partes, $RANDOM%31 vai gerar uma sequência entre 0 e 30 (possíveis valores do resto de uma divisão por 31), e somar 20 fará com os valores de 0 a 30 passem para a faixa de 20 a 50.
Agradeço pela ajuda.

Obrigado

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder