Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1

    scegliere numeri casuali da array non ripetuti

    Salve a tutti,
    dovrei fare una funzione che mi seleziona da un array 3 numeri casuali, che non siano ripetuti, es:
    mioArr = (0,3,6,12,34,56,78)
    il risultato dovrà essere qualcosa di simile: 0,6,12 e non 0,6,6.

    girando per i post, ho trovato parecchi script anche complessi, e che a volte restituiscono lo stesso numero, o non funzionanti.
    Sono andato un pò in confusione.
    Qualcuno potrebbe suggerirmi uno script funzionante pls?

    grazie, ciao.

  2. #2
    devi farti un doppio array: uno con i numeri da estrarre e uno con i numeri già estratti.

    inizia col preparare lo script che estrae i numeri casuali, anche ripetuti, poi lo sistemiamo

  3. #3
    Grazie Optime, sei un grande come sempre!
    Scusa se non ti ho risposto prima, ma sono dovuto andare a lavorare, io ho preparato questo:

    codice:
    set r = Server.CreateObject("ADODB.Recordset")
    sqlOff = "SELECT ID FROM tab_utenti"
    set r = conn.Execute(sqlOff)
    dim arrOff(100) 
    
    i = 0
    
    	do while not r.eof
    	if not r.eof or r.bof then
    		arrOff(i) = CInt(r("ID"))	
    		i = i+1
    	end if
    	r.MoveNext
    	loop
    
    
    // funzione per gli array
    		
    		for i = 1 to 3
    			' calcoliamo l'ID casuale con la formula
    			Randomize
    			rndID = Int(arrOff(i) * Rnd) // parto dall'id per generare un numero casuale
    
    			Response.write("id"&i&"= "&rndID)
    next
    sto cercando di partire da un concetto semplicissimo per arrivare a qualcosa di specifico.

    Grazie, ciao.

  4. #4
    diamo intanto una pulitina

    codice:
    set r = Server.CreateObject("ADODB.Recordset")
    sqlOff = "SELECT ID FROM tab_utenti"
    set r = conn.Execute(sqlOff)
    redim arrOff(0) 
    
    i = 0
    
    do while not r.eof
       if not r.eof or r.bof then
          redim preserve arrOff(i)
          arrOff(i) = CInt(r("ID"))	
          i = i+1
       end if
       r.MoveNext
    loop
    
    
    ' funzione per gli array
    
    for i = 1 to 3
       ' calcoliamo l'ID casuale con la formula
       Randomize
       rndID = Int(arrOff(i) * Rnd) // parto dall'id per generare un numero casuale
       Response.write("id(" & i & ") = " & rndID)
    next
    dimmi se fuzia, poi procediamo

  5. #5
    Thnx, funziona, mi restituisce:
    id(1) = 1 id(2) = 2 id(3) = 1
    come vedi abbiamo però una ripetizione

    Non ho capito come mai mettendo dim mi dava errore se non definivo l'entità dell'array tra parentesi, invece con redim, e preserve pare che funziona.

  6. #6
    Optime, ti sei dimenticato di me

  7. #7
    Originariamente inviato da DarioMarco
    Optime, ti sei dimenticato di me
    un altro che frigna. io NON sono il forum. ciao

  8. #8
    Originariamente inviato da DarioMarco
    Thnx, funziona, mi restituisce:
    id(1) = 1 id(2) = 2 id(3) = 1
    come vedi abbiamo però una ripetizione
    te l'ho detto prima, facciamo UNA cosa alla volta

    Originariamente inviato da DarioMarco
    Non ho capito come mai mettendo dim mi dava errore se non definivo l'entità dell'array tra parentesi, invece con redim, e preserve pare che funziona.
    Dim http://msdn.microsoft.com/en-us/library/zexdsyc0(VS.85).aspx dimensiona UNA volta per sempre.

    ReDim http://msdn.microsoft.com/en-us/library/c850dt17(VS.85).aspx ti permette di cambiare la dimensione dell'array.

    quando il tutto ti è chiaro, fischia

  9. #9
    Ok, se tutto è ben chiaro:
    abbiamo redimensionato l'array a 0
    mano mano che mettevamo gli id nell'array lo ridimensionavamo in base al contatore i.

    Una domanda: perchè se io faccio:
    codice:
    set r = conn.Execute(sqlOff)
    dim arrOff() // dichiarazione di un'array dinamico
    mi restituische : type mismatch?


  10. #10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.