Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Generare numeri casuali senza ripetizioni.
Forum - Visual Basic 6 - Generare numeri casuali senza ripetizioni.

Avatar
borbone (Normal User)
Newbie


Messaggi: 2
Iscritto: 03/12/2010

Segnala al moderatore
Postato alle 10:53
Venerdì, 03/12/2010
Salve a tutti ,

ho bisogno di creare un generatore di un tot di numeri senza ripetere quelli già generati. Ho trovato alcuni codici già scritti in rete ma pur capendo la logica  non sono riuscito a farli funzionare. Mi spiego meglio ..
Usando questo codice:

Codice sorgente - presumibilmente VB.NET

  1. Private Function Estrai() As Integer()
  2.     Dim Numeri As Collection
  3.     Dim Estratti(89) As Integer 'da 0 a 89
  4.     Dim k As Integer, iPos As Integer, Estratto As Integer
  5.     Randomize
  6.     Set Numeri = New Collection
  7.     'Popoliamo la collection con i 90 numeri
  8.     For k = 1 To 90
  9.         Numeri.Add k, CStr(k)
  10.     Next
  11.    'ad ogni step i limiti della funzione rnd diminuiscono di 1
  12.     For k = 90 To 1 Step -1
  13.         iPos = Int((k * Rnd) + 1)
  14.         Estratto = CInt(Numeri.Item(iPos))
  15.         Numeri.Remove (iPos)
  16.         Estratti(90 - k) = Estratto
  17.     Next
  18.     Estrai = Estratti
  19. End Function



Ora vorrei fare in modo che ad ogni click del mouse su un button , vengano generati in 2 o 3 label , dei numeri casuali senza ripetizioni. Come posso fare?
Il mio intento è quello di creare un mazzo di 40 carte....

Grazie.

Ultima modifica effettuata da borbone il 03/12/2010 alle 10:56
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 11:23
Venerdì, 03/12/2010

visto che è un mazzo di 40 carte potresti semplicemente generare 40 carte in ordine  poi con delle swap con indici casuali scambiare delle coppie per "incasinarlo" :)

PM Quote
Avatar
borbone (Normal User)
Newbie


Messaggi: 2
Iscritto: 03/12/2010

Segnala al moderatore
Postato alle 13:07
Venerdì, 03/12/2010
Ciao , grazie per la risposta. Potresti farmi un esempio di codice?
Grazie.

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 14:23
Domenica, 05/12/2010
Sezione sbagliata. Sposto in VB6.

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 18:46
Lunedì, 06/12/2010
spiega meglio cosa vuoi fare... numeri casuali compresi tra quali estremi?

PM Quote
Avatar
felixiuc91 (Normal User)
Rookie


Messaggi: 27
Iscritto: 16/04/2010

Segnala al moderatore
Postato alle 21:06
Venerdì, 10/12/2010
Il numero estratto mettilo in un vettore (array) , ma prima controlla che non sia gia presente
esempio
Codice sorgente - presumibilmente VB.NET

  1. c=0
  2. c1=1
  3.  
  4. do while c<=40
  5.   nr=int(rnd*6+1)
  6.      do while c1<=40
  7.         if nr = v(c1) then
  8.            nr=int(rnd*6+1)
  9.            c1=1
  10.         end if
  11.      c1=c1+1
  12.      loop
  13. c=c+1
  14. c1=1
  15. loop


Ultima modifica effettuata da felixiuc91 il 10/12/2010 alle 21:09
PM Quote