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?
Numeros Aleatórios
Iniciado por
NameException
, 23 Jun 2006 10:40
8 respostas a este tópico
#1
Publicado 23 de Junho de 2006 - 10:40
#2
Publicado 23 de Junho de 2006 - 16:11
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
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
#3
Publicado 23 de Junho de 2006 - 19:20
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.
#4
Publicado 24 de Junho de 2006 - 15:35
Ok, mas dessa forma, saem numeros repetidos numa unica extracção.... Há forma de contornar esse problema...???
#5
Publicado 26 de Junho de 2006 - 14:42
Citar
..nao e la muito "aleatorio"..
Citar
...saem numeros repetidos numa unica extracção..
#6
Publicado 26 de Junho de 2006 - 21:34
lol nao, ele quer e apenas retirar numeros diferentes sempre (tipo as bolas do euromilhoes), isso e uma questao de pensar uma beka...
#7
Publicado 28 de Junho de 2006 - 21:39
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é
É 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é
#8
Publicado 30 de Junho de 2006 - 11:18
Citar
Na realidade é possivel gerar números "verdadeiramente aleatórios", com base no tempo do relogio (ex: System.currentTimeMillis()
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.
#9
Publicado 30 de Junho de 2006 - 17:52
podes criar um vector com 50 posicoes, fazes random de uma posicao e eliminas essa posicao/numero, assim esse numero ja nao pode sair...











