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

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

Daniel Zaia Manzano
dzm_linux

(usa Debian)

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


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

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]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

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]

Daniel Zaia Manzano
dzm_linux

(usa Debian)

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






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts