Gerar Numeros Aleatórios
Iniciado por
NameException
, 23 Jun 2006 10:35
10 respostas a este tópico
#1
Publicado 23 de Junho de 2006 - 10:35
Boas, ppl....
Tou a desenvolver uma aplicação em VB, para simular o sorteio do euromilhões, mas não estou a conseguir gerar numeros aleatórios..... Alguem me pode dar uma dica?
Tou a desenvolver uma aplicação em VB, para simular o sorteio do euromilhões, mas não estou a conseguir gerar numeros aleatórios..... Alguem me pode dar uma dica?
#2
Publicado 23 de Junho de 2006 - 11:54
Aqui vai:
Pega nos segundos do "time system" e multiplica por um número aleatóreo, criando assim um verdadeiro número aleatóreo
Private Sub Command1_Click()
seconds = Right(Time$, 2)
'Podes tirar o Int() e ficas com
'um número com casas decimais
Random_Number = Int(Rnd * seconds)
End Sub
Pega nos segundos do "time system" e multiplica por um número aleatóreo, criando assim um verdadeiro número aleatóreo
Private Sub Command1_Click()
seconds = Right(Time$, 2)
'Podes tirar o Int() e ficas com
'um número com casas decimais
Random_Number = Int(Rnd * seconds)
End Sub
#3
Publicado 23 de Junho de 2006 - 12:05
Private Sub Command1_Click()
Randomize Timer
Random_Number = Int(Rnd * seconds)
End Sub
Penso que isto faz o mesmo
Randomize Timer
Random_Number = Int(Rnd * seconds)
End Sub
Penso que isto faz o mesmo
#4
Publicado 23 de Junho de 2006 - 13:31
Aqui fica a minha sugestão (dps posto o meu code do euromilhoes)
Código (Visual Basic):
A Função Int() faz com que o nº se transforme em inteiro sem regras de arredondamento, isto é, 9,6 não ficará 10, mas sim 9 para ficar inteiro segundo as regras de arredondamento terias de usar a função Round()
O (Rnd * 3) + 1 que dizer que vai ser gerado um nº aleatório entre 0 e 2 penso eu, como 0 nao pode ser solução e é até 3 entao 0+1= 1, 1+1=2, 2+1 = 3, ou seja, o +1 é para que os valores fiquem entre 1 e 3
Rnd é uma "sigla" usada para gerar nºs aleatórios :biggrin:
Hope i've helped u
Código (Visual Basic):
Dim a As Double
a = Int(Rnd * 3) + 1
Text1.Text = a
a = Int(Rnd * 3) + 1
Text1.Text = a
A Função Int() faz com que o nº se transforme em inteiro sem regras de arredondamento, isto é, 9,6 não ficará 10, mas sim 9 para ficar inteiro segundo as regras de arredondamento terias de usar a função Round()
O (Rnd * 3) + 1 que dizer que vai ser gerado um nº aleatório entre 0 e 2 penso eu, como 0 nao pode ser solução e é até 3 entao 0+1= 1, 1+1=2, 2+1 = 3, ou seja, o +1 é para que os valores fiquem entre 1 e 3
Rnd é uma "sigla" usada para gerar nºs aleatórios :biggrin:
Hope i've helped u
#5
Publicado 23 de Junho de 2006 - 15:34
Já nao tenho o code soz... :\
#6
Publicado 24 de Junho de 2006 - 15:37
Obrigadão!!!
#8
Publicado 26 de Junho de 2006 - 09:26
Assim gera um numero aleatório, mas eu kero gerar entre 5 e 12 numeros, mas não tenho forma de guardar esses numeros temporariamente e depois listá-los... Haverá algo parecido com Array's ou Vectores em VB 6, como em Java? Ou como é que posso guardar os valores?
#9
Publicado 26 de Junho de 2006 - 10:00
NameException, em 26 de Junho de 2006 - 09:26, disse:
Assim gera um numero aleatório, mas eu kero gerar entre 5 e 12 numeros, mas não tenho forma de guardar esses numeros temporariamente e depois listá-los... Haverá algo parecido com Array's ou Vectores em VB 6, como em Java? Ou como é que posso guardar os valores?
Há Arrays e Vectores
http://www.portugal-a-programar.pt/index.php?showtopic=2589
#10
Publicado 06 de Julho de 2006 - 08:46
Para gerares nºs aleatorios podes usar apenas estas duas instruções
randomize timer
x=int(rnd*49)+1 para sortear de 1 a 49
depois podes criar um array do tipo boolean em que basicamente verificas se o nº que ele deu já saiu ou não para isso basta fazeres isso
a(x).value=true
if a(x).value=true then
sorteia outro nº
else
a(x)=true
msgbox x ou outro output qq
endif
randomize timer
x=int(rnd*49)+1 para sortear de 1 a 49
depois podes criar um array do tipo boolean em que basicamente verificas se o nº que ele deu já saiu ou não para isso basta fazeres isso
a(x).value=true
if a(x).value=true then
sorteia outro nº
else
a(x)=true
msgbox x ou outro output qq
endif
#11
Publicado 07 de Julho de 2006 - 09:20
UnKnowN, em 23 de Junho de 2006 - 13:31, disse:
Aqui fica a minha sugestão (dps posto o meu code do euromilhoes)
Código (Visual Basic):
A Função Int() faz com que o nº se transforme em inteiro sem regras de arredondamento, isto é, 9,6 não ficará 10, mas sim 9 para ficar inteiro segundo as regras de arredondamento terias de usar a função Round()
O (Rnd * 3) + 1 que dizer que vai ser gerado um nº aleatório entre 0 e 2 penso eu, como 0 nao pode ser solução e é até 3 entao 0+1= 1, 1+1=2, 2+1 = 3, ou seja, o +1 é para que os valores fiquem entre 1 e 3
Rnd é uma "sigla" usada para gerar nºs aleatórios :biggrin:
Hope i've helped u
Código (Visual Basic):
Dim a As Double
a = Int(Rnd * 3) + 1
Text1.Text = a
a = Int(Rnd * 3) + 1
Text1.Text = a
A Função Int() faz com que o nº se transforme em inteiro sem regras de arredondamento, isto é, 9,6 não ficará 10, mas sim 9 para ficar inteiro segundo as regras de arredondamento terias de usar a função Round()
O (Rnd * 3) + 1 que dizer que vai ser gerado um nº aleatório entre 0 e 2 penso eu, como 0 nao pode ser solução e é até 3 entao 0+1= 1, 1+1=2, 2+1 = 3, ou seja, o +1 é para que os valores fiquem entre 1 e 3
Rnd é uma "sigla" usada para gerar nºs aleatórios :biggrin:
Hope i've helped u
a função round n funciona correctamente pk penso ser arredondamentos para outros países... o que quero dizer é, quando o falor é 9,3, o valor arredonda para 9... se o valor for 9,7, arredonda para 10... MAS se o valor for 9,5 o valor arredonda para 9, o que para nós está incorrecto, o que costumo fazer é adicionar 0,1 ao valor inicial para corrigir este erro e funciona correctamente











