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 - Creare un random per la tombola ?
Forum - Visual Basic 6 - Creare un random per la tombola ?

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
frabelfagor_95 (Normal User)
Newbie


Messaggi: 17
Iscritto: 05/01/2011

Segnala al moderatore
Postato alle 14:17
Mercoledì, 05/01/2011
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:

PM
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Up
1
Down
V
Segnala al moderatore
Postato alle 19:44
Mercoledì, 05/01/2011
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

PM
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Up
1
Down
V
Segnala al moderatore
Postato alle 12:34
Venerdì, 07/01/2011
Non so se hai letto il mio messaggio nella seconda discussione che ti ho chiuso, ma te lo riposto...

Testo quotato


Poi vedo che ogni label contiene un numero e in base al numero uscito mostri la label corrispondente... ma scusa non potresti usare un'unica label dove mostri il numero uscito? (Con: lbl1.caption = txtestratto.text)


Ultima modifica effettuata da GrG il 07/01/2011 alle 12:35
PM
Avatar
delta (Member)
Rookie


Messaggi: 37
Iscritto: 25/08/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 18:55
Mercoledì, 05/01/2011
Testo quotato

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
Codice sorgente - presumibilmente Visual Basic 6

  1. Dim an_int As Integer = Random*numero_arbitrariamente_alto


poi il resto te lo vedi da te...

PM
Avatar
frabelfagor_95 (Normal User)
Newbie


Messaggi: 17
Iscritto: 05/01/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 19:58
Mercoledì, 05/01/2011
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 :)

PM
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 20:38
Mercoledì, 05/01/2011
Testo quotato

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

PM
Avatar
frabelfagor_95 (Normal User)
Newbie


Messaggi: 17
Iscritto: 05/01/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 9:52
Giovedì, 06/01/2011
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:


Codice sorgente - presumibilmente VB.NET

  1. Private Sub Timer1_Timer()
  2.       Randomize
  3.       txtestreatto= Int(Rnd * 15)
  4.       if txtestratto.text = lbl1.caption then
  5.       lbl1.visible = true
  6.       end if
  7.       if txtestratto.text = lbl2.caption then
  8.       lbl2.visible = true
  9.       end if
  10.       if txtestratto.text = lbl3.caption then
  11.       lbl3.visible = true
  12.       end if
  13.       if txtestratto.text = lbl4.caption then
  14.       lbl4.visible = true
  15.       end if
  16.       'ecc...
  17.       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 il 06/01/2011 alle 9:54
PM
Avatar
dedo93 (Normal User)
Newbie


Messaggi: 8
Iscritto: 03/01/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 11:12
Giovedì, 06/01/2011
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...
;)

PM
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 11:57
Giovedì, 06/01/2011
Testo quotato

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:

PM
Pagine: [ 1 2 ] Precedente | Prossimo