• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Sign in to follow this  
Followers 0
NameException

Numeros Aleatórios

9 posts in this topic

Boas, ppl....

Tou a desenvolver uma aplicação em JAVA, para simular o sorteio do euromilhões, mas não estou a conseguir gerar numeros aleatórios..... Alguem me pode dar uma dica?

0

Share this post


Link to post
Share on other sites

Basta invocares o método Math.random()

EX: gerar números até 10

Math.random() * 10 ... humm não me lembro se assim funciona sempre :hmm:... tenho de ir ver, mas é a class Math que tens de usar ;)

0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

Ok, mas dessa forma, saem numeros repetidos numa unica extracção.... Há forma de contornar esse problema...???

0

Share this post


Link to post
Share on other sites
..nao e la muito "aleatorio"..

Em computadores não existe número aleatório nenhum que seja aleatório :P, 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 :)

0

Share this post


Link to post
Share on other sites

lol nao, ele quer e apenas retirar numeros diferentes sempre (tipo as bolas do euromilhoes), isso e uma questao de pensar uma beka... :P

0

Share this post


Link to post
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é

0

Share this post


Link to post
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.

0

Share this post


Link to post
Share on other sites

podes criar um vector com 50 posicoes, fazes random de uma posicao e eliminas essa posicao/numero, assim esse numero ja nao pode sair...

0

Share this post


Link to post
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
Sign in to follow this  
Followers 0