Jump to content

Numeros Aleatórios


NameException

Recommended Posts

O gerador de numeros aleatorios que vem com java é mau (nao e la muito "aleatorio") e alem disso nao da para repetir um determinado sorteio. de quealquer forma e para uma coisa basica funciona e e como o Knitter disse Math.random(), isto gera um numero aleatorio (baseado no tempo do sistema) entre 0 e 1 depois so tens de multiplicar ou  arrendondar para obteres numeros no intervalo que quiseres.

Link to comment
Share on other sites

..nao e la muito "aleatorio"..

Em computadores não existe número aleatório nenhum que seja aleatório 😛 , mas tens razão o do Java não é grande coisa, agora que penso nisso nem sei se dá para mudar a semente dos números, hum... tenho de ver isso.

...saem numeros repetidos numa unica extracção..

Não percebi, cada vez que chamas o Math.random() dá o mesmo número? Eu usei em vários programas e nunca tive problemas, dentro de 'fors' ou 'whiles', etc, tens de ter atenção que o número gerado é entre 0 e 1, se o converteres para inteiro dá sempre 0!, mas já deves saber isso 🙂

Link to comment
Share on other sites

Olá a todos.

É o meu primeiro post neste fórum e gostava de conseguir ajudar. =)

Na realidade é possivel gerar números "verdadeiramente aleatórios", com base no tempo do relogio (ex:  System.currentTimeMillis(); ) ou de outras formas.

Ao contrário dos algoritmos de geração de numeros "psedo-aleatorios", nos quais aos reeniciar o programa ele gera numeros que já tinha gerado noutro fluxo de execução, desta forma isso não acontece.

Podes "personalizar" algumas funções que já existem (procura "RandomGUID" no Google), por forma a que te sejam devolvidos apenas digitos (e não letras). Da mesma forma podes definir o tamanho daquilo que queres que seja devolvido (comprimento 2, 5, 10, ...).

Provavelmente também é possivel definir o intervalo de número que queres( 0 < x < 50), no entanto, caso não seja possivel (o que acho ser o mais provável), podes sempre fazer uma verificação adicional (se o numero gerado está entre X e Y, tudo bem; caso contrario gero outro e verifico novamente;)

Gostava que este primeiro post tivesse ajudado de alguma forma.

Boa sorte para o trabalho!

Abraço a todos!

André

Link to comment
Share on other sites

Na realidade é possivel gerar números "verdadeiramente aleatórios", com base no tempo do relogio (ex:  System.currentTimeMillis()

O que faz com que sejam mais variados mas não "verdadeiramente aleatórios". Neste caso o que se faz é mudar a base dos cálculos, a semente dos números, no entanto não deixam de ser número cálculados, um processador não tem capacidade de "inventar" números, apenas de os calcular e isso faz com que não sejam aleatórios.

Mas Andre tens razão e acho que não falamos nisso, para se obter números mais variados é necessário usar o tempo de relógio como base.

Peace.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.