Oppure

Loading
05/01/11 13:17
frabelfagor_95
Ciao a tutti !
Sono nuovo del forum e oggi vi voglio chiedere un buon codice che immesso in un timer ogni 5 secondi, in una textbox, mi venga fuori un numero casuale MA che esso non si debba ripetere :nono: mai !

PS: Uso il visual basic 6 !

Grazie a tutti
Attendo un vostro aiuto

:k:
aaa
05/01/11 17:55
delta
Postato originariamente da frabelfagor_95:

Ciao a tutti !
Sono nuovo del forum e oggi vi voglio chiedere un buon codice che immesso in un timer ogni 5 secondi, in una textbox, mi venga fuori un numero casuale MA che esso non si debba ripetere :nono: mai !

PS: Uso il visual basic 6 !

Grazie a tutti
Attendo un vostro aiuto

:k:


"vi voglio chiedere buon buon codice?" :nono:
io ti suggerisco di usare qualcosa di questo tipo
Dim an_int As Integer = Random*numero_arbitrariamente_alto

poi il resto te lo vedi da te...
aaa
05/01/11 18:44
gigisoft
Ciao,
per avere un algoritmo con un tempo di risposta lineare fai in questo modo:

1) dichiara un array di 90 interi in cuimetti i relativi 90 numeri
2) dichiara una variabile intera Num e ponila al valore 90
3) ad ogni estrazione fai cosi':
3.1) prendi un numero casuale X tra 1 e Num
3.2) estrai il numero contenuto nell'array al posto X
3.3) scambia nell'array gli elementi di posti X e Num
3.4) Decrementa la variabile Num

Questo e' il modo in cui agirei io;
in alternativa, se vuoi, puoi usare una lista invece dell'array, in tal caso potrai eliminare l'elemento estratto invece di scambiarlo con l'ultimo.
Per la traduzione in VB6 tocca a te.

Ciao. :k:

Luigi
aaa
05/01/11 18:58
frabelfagor_95
Ciao Luigi!
Grazie molto per avermi risposto !

so che sicuramente quello che mi hai detto funziona, ma io sono alle prime con visual basic 6 e ti sarei grado se riusciresti a postarmi un codice facile ;)

Ti ringrazio in anticipo, e ti saluto :)
aaa
05/01/11 19:38
gigisoft
Postato originariamente da frabelfagor_95:

Ciao Luigi!
Grazie molto per avermi risposto !

so che sicuramente quello che mi hai detto funziona, ma io sono alle prime con visual basic 6 e ti sarei grado se riusciresti a postarmi un codice facile ;)

Ti ringrazio in anticipo, e ti saluto :)


Salve,
se avessi voluto postarti il codice gia' pronto non credi che lo avrei gia' fatto?
Se lo avessi fatto, pero', non ti avrei fatto un favore, anzi, finirebbe che tu stai sempre qui' ( o da qualche altra parte ) a elemosinare del codice, senza mai imparare a fartelo da te.

Se sei alle prime armi, studia, inizia da esempi semplici, anche ca(biiiip)ate, l'importante e' che capisci come funziona il linguaggio, vedrai che piano piano riuscirai a fartelo da te il codice.

Se poi scrivi del codice che non funziona, e non riesci a capire perche', allora siamo qui', puoi postarlo ( possibilmente ben commentato, spiegando cosa non funziona, come vorresti che funzionasse, che errori da, se ne da, ecc... ) e ti daremo una mano a capire cosa non funziona, ma sempre col fine di imparare.

Ok?
Ciao. :k:

Luigi
aaa
06/01/11 8:52
frabelfagor_95
Ehi !
ma cosa fai mi perseguiti ? :rotfl:

comunque si, hai ragione adesso ti posto il mio codice :)

Ho un timer1 con intervallo di 3000 e dentro ho inserito questo codice:


      Private Sub Timer1_Timer()
      Randomize
      txtestreatto= Int(Rnd * 15)
      if txtestratto.text = lbl1.caption then
      lbl1.visible = true
      end if
      if txtestratto.text = lbl2.caption then
      lbl2.visible = true
      end if
      if txtestratto.text = lbl3.caption then
      lbl3.visible = true
      end if
      if txtestratto.text = lbl4.caption then
      lbl4.visible = true
      end if
      'ecc...
      End Sub



e i numeri escono in randomize ma come ho detto prima, purtroppo si ripetono !

poi, ho 90 label tutte numerate

Esempio:

la label che contiene il numero 1, si chiama lbl1 e così via... ovviamente ho messo nello stesso timer un controllo per rendere visibile le label in base al numero generato.

Ma ovviamente, l'unico problema è quello che i numeri estratti non devono ripetersi mai.

Ti basta ?

Grazie ancora ! :k:
Ultima modifica effettuata da frabelfagor_95 06/01/11 8:54
aaa
06/01/11 10:12
dedo93
Io per una tombola avrei fatto una funzione che genera un numero da 1 a 90, controllando in un array se il valore è già presente
Dim numeriEstratti(1 to 90) as Boolean
se è già uscito richiamo la funzione nuovamente (funzione ricorsiva).
una volta trovato il nuovo numero lo aggiungo in una listbox per esempio. oppure faccio un append in una text box.. e via dicendo...
;)
aaa
06/01/11 10:57
gigisoft
Postato originariamente da dedo93:

Io per una tombola avrei fatto una funzione che genera un numero da 1 a 90, controllando in un array se il valore è già presente
Dim numeriEstratti(1 to 90) as Boolean
se è già uscito richiamo la funzione nuovamente (funzione ricorsiva).
una volta trovato il nuovo numero lo aggiungo in una listbox per esempio. oppure faccio un append in una text box.. e via dicendo...
;)


Questo e' sicuramente il modo piu' sbrigativo, purtroppo man mano che i numeri ancora da estrarre diminuiscono il tempo di estrazione tende ad aumentare esponenzialmente; quello che avevo proposto io e' piu' elaborato, ma il tempo di estrazione e' lineare. :k:
aaa