Ir para conteúdo


Revista PROGRAMAR – Edição 46 (Setembro 2014): Download já disponível!

- - - - -

Gerar Numeros Aleatórios


  • Por favor inicie sessão para responder
10 respostas a este tópico

#1 NameException

NameException

    Boolean User

  • Membro
  • PipPipPip
  • 156 mensagens

Publicado 23 de Junho de 2006 - 11: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?

#2 Tyagus

Tyagus

    void

  • Membro
  • PipPip
  • 83 mensagens

Publicado 23 de Junho de 2006 - 12: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

#3 seesharptec

seesharptec

    Boolean User

  • Wiki
  • PipPipPip
  • 140 mensagens

Publicado 23 de Junho de 2006 - 13:05

Private Sub Command1_Click()
    Randomize Timer
    Random_Number = Int(Rnd * seconds)
End Sub

Penso que isto faz o mesmo

#4 UnKnowN

UnKnowN

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 1454 mensagens

Publicado 23 de Junho de 2006 - 14:31

Aqui fica a minha sugestão (dps posto o meu code do euromilhoes)

Código (Visual Basic):
Dim a As Double
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 UnKnowN

UnKnowN

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 1454 mensagens

Publicado 23 de Junho de 2006 - 16:34

Já nao tenho o code soz... :\

#6 NameException

NameException

    Boolean User

  • Membro
  • PipPipPip
  • 156 mensagens

Publicado 24 de Junho de 2006 - 16:37

Obrigadão!!!

#7 UnKnowN

UnKnowN

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 1454 mensagens

Publicado 24 de Junho de 2006 - 17:09

Ver MensagemNameException, em 24 de Junho de 2006 - 16:37, disse:

Obrigadão!!!

Resultou de que forma ? ;)

#8 NameException

NameException

    Boolean User

  • Membro
  • PipPipPip
  • 156 mensagens

Publicado 26 de Junho de 2006 - 10: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 UnKnowN

UnKnowN

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 1454 mensagens

Publicado 26 de Junho de 2006 - 11:00

Ver MensagemNameException, em 26 de Junho de 2006 - 10: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 :P

http://www.portugal-a-programar.pt/index.php?showtopic=2589

#10 jluisfer

jluisfer

    void

  • Membro
  • PipPip
  • 33 mensagens

Publicado 06 de Julho de 2006 - 09: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

#11 Scorpion_Blood

Scorpion_Blood

    Boolean User

  • Staff Revista PROGRAMAR
  • PipPipPip
  • 223 mensagens

Publicado 07 de Julho de 2006 - 10:20

Ver MensagemUnKnowN, em 23 de Junho de 2006 - 14:31, disse:

Aqui fica a minha sugestão (dps posto o meu code do euromilhoes)

Código (Visual Basic):
Dim a As Double
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 :)