Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2001
    residenza
    Milano
    Messaggi
    217

    Generare numero casuale di 10 cifre

    Ragazzi

    Mi rivolgo a chi di voi ha più esperienza di me in quanto ho necessità di generare un codice casuale di 10 cifre che non si ripeta in quanto altrimenti non avrebbe senso
    Io ho realizzato il codice di seguito ma ho notato che si ripete

    codice:
    Function genera(Max, Min, MaxChar) 
    	Dim codice, cifra
    	For i = 0 To MaxChar 
    	Randomize timer
    		codice = Int((Max * Rnd()) + 1) 
    		cifra = cifra & codice
    	next 
    	genera =cifra
    End Function 
    
    
    codicevis = lcase(genera(5, 48, 9))
    
    Response.Write codicevis4

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Non puoi pretendere che "non si ripeta" se non te li salvi da qualche parte e verifichi non sia gia' stato generato
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    cià, ci ho dato una ripulita

    codice:
    <%
    
    Function genera(MaxChar) 
    	Dim codice, cifra, excifra
    	For i = 0 To MaxChar 
    		Do
    			Randomize timer*timer
    			cifra = Int(Rnd()*9 + 1) 
    			if cifra<>excifra then exit do
    		Loop
    		codice = codice & cifra
    		excifra = cifra
    	next 
    	genera = codice
    End Function 
    
    codicevis = Genera(9)
    
    Response.Write codicevis
    
    %>

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2001
    residenza
    Milano
    Messaggi
    217
    Praticamente excifra dovrebbe essere il valore da ricercare nel database magari sottoforma di subrutine o di funzione?

    Stavo pensando che piuttosto che ricavare numero x numero potrei usare un qualcosa del genere ma ho notato che anche se aggiorno la pagina il valore non cambia possibile ?

    Attendo consiglio su ambo le formule e la correzione se possibile per capire dove sbaglio.

    codice:
    
    function ricalcola
    n = Int(Rnd()*10000000000)
    IF len(n) < 10 then
    codice = Int(Rnd()*10000000000)
    ricalcola = ricalcola & codice
    else 
    ricalcola = ricalcola & n 
    end if 
    end function 
    
    Response.Write ricalcola

  5. #5
    due problemi:

    1. la generazione del codice
    2. il controllo che non sia già stato usato

    per il punto 1, direi che con la mia routine ci sei

    per il punto 2, devi avere - come hai correttamente intuito - una tabella d'appoggio in cui inserire - e cercare - i numeri già generati.

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2001
    residenza
    Milano
    Messaggi
    217
    Io infatti sto cercando di far interagire il codice con un database ma non c'è verso ....
    Non dovrebbe essere collegato con una funzione ad EXCIFRA ?
    Mi aiuti ad inserirla nella funzione che mi hai aggiustato....?

    Stavo pensando a qualcosa del genere

    codice:
    function excifra (cifra)
    Set rs = Server.CreateObject("ADODB.Recordset")
    sql = "SELECT codice FROM visitatori where codice='" & cifra & "'"
    rs.open sql, conn, 1, 3 
    if not rs.eof then 
    excifra = rs("codice")
    end if 
    rs.close 
    set rs = nothing
    conn.close
    set conn=nothing
    end function

  7. #7
    la function "excifra" funziona?

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2001
    residenza
    Milano
    Messaggi
    217
    Purtroppo no .... è quello che mi fa incavolare

  9. #9
    non funziona, ok, che vuol dire in pratica? dà errore? non trova? altro?

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2001
    residenza
    Milano
    Messaggi
    217
    Ho fatto una piccola modifica e adesso riesce a rilevare la funzione però a questo punto essendo che il controllo avviene prima della generazione del loop secondo me dovremmo spspostare il controllo al termine dello stesso.

    Pero a questo punto se dopo inseriamo il controllo che riporto come gli diciamo di generare nuovamente un numero random e ripetere il controllo ?


    codice:
    cifra<>verifica then exit do
    function excifra(cifra)
    Set rs = Server.CreateObject("ADODB.Recordset")
    sql = "SELECT codice FROM visitatori where codice='" & cifra & "'"
    rs.open sql, conn, 1, 3
    if not rs.eof then
    excifra = rs("codice")
    end if
    Response.Write sql
    rs.close
    set rs = nothing
    'conn.close
    'set conn=nothing
    end function


    Function genera(MaxChar)
    Dim codice, cifra

    For i = 0 To MaxChar
    Do
    Randomize timer*timer
    cifra = Int(Rnd()*9 + 1)
    verifica = excifra(cifra)
    if cifra<>verifica then exit do
    Loop
    codice = codice & cifra

    next
    genera = codice
    'addutente(IDutente)
    End Function

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.