Oppure

Loading
30/01/07 17:59
zubizarreta
ciao a tutti....ho un problema...
voglio creare a random dei numeri in una funzione ( e qst lo riesco a fare), xò volgio ke questi numeri non si devono ripetere..cioè mettere un controllo..che se li trova uguali a quelli precednti faccia in modo di "randomizzare" un altra volta. Io l soluzione l'avevo trovata usando un vettore e 2 cicli...ma ogni volta ke il progrmma andava ad eseguire quella funzione, il vettore praticamente si svuotava (nel senso ke i valori messi prima, nn c'erano più;)...come fare?...
grazie...io vi metto qui il codice della funzione.


Public Function random2() As Integer
Dim help(1 To 28), ko As Integer
i = 1
Do While (ko = 0) And (i < 29)
-ko = 0
-Randomize
-Min = 0
-Max = 27
-random2 = (Max - Min) * Rnd + Min
-ko = 1
-For j = 1 To 28
---If help(j) = random2 Then
-----ko = 0
---End If
-Next
-If ko = 1 Then
---help(i) = random2
---i = i + 1
-End If
Loop
End Function
Ultima modifica effettuata da zubizarreta 30/01/07 18:01
aaa
30/01/07 19:38
sange_90
Se ti può essere di aiuto vai su q.sta pagina che anchio cercavo una cosa simile (poi c'è da vedere se va bene anche a te) :
pierotofy.it/pages/extras/forum/…=
Spero di esserti stato di aiuto...;)
aaa
31/01/07 9:18
Reese
Basta che, ogni volta che prendi un numero random, lo inserisci in un array, poi prima di prendere un altro numero random verifiche se c'è già. puoi ottimizzare questo approccio in molti modi.
aaa
31/01/07 21:15
zubizarreta
Postato originariamente da Reese:

Basta che, ogni volta che prendi un numero random, lo inserisci in un array, poi prima di prendere un altro numero random verifiche se c'è già. puoi ottimizzare questo approccio in molti modi.


questo è quello ke faccio nella funzione (e mi dovrebbe funzionars enn c fosse il problema ke ho detto sopra)..ke cioè ogni voolta mi cancella il vettore..
aaa
01/02/07 9:23
Reese
dim arr() as long, num as long, i as integer, counter as integer
redim arr(100)

counter=0

randomize
new_rnd:
num=rnd*costante
for i=0 to counter
if num=arr(i) then goto new_rnd
next i
counter=counter+1


o una cosa del genere.
aaa