Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797

    [JAVA] Creare codici random univoci

    Salve gente.
    avrei bisogno di creare un codice (8-10 cifre) random che sia però univoco o altamente improbabile di trovare doppioni.
    il codice dovrebbe essere formato da numeri e lettere.. qualcuno ha qualcosa?

  2. #2
    Anche la lunghezza deve essere random?

    Se è così potresti fare in questo modo:

    1) Crei un array con tre interi contenenti le possibili lunghezze: 8, 9, 10.
    2) estrai un numero random compreso tra 0 e 2. Questo numero altro non è che l'indice di uno degli elementi dell'array delle lunghezze. Supponiamo che il numero random sia 1...allora la lunghezza sarà 9.
    3) crei un array: array_lettere={'a','b',....'z'}
    4) crei un altro array contentente il tipo di dato da generare: array_tipi={'num',lett'}

    ripeti i seguenti passi per 9 (lunghezza del codice) cicli:
    5) estrai un numero random tra 0 e 1 che identificherà il tipo di dato da estrarre
    6) se il tipo di dato è 'num' estrai un numero random tra 0 e 9 ; se il tipo dato è 'lett' estrai un numero compreso tra 0 e array_lettere.length();
    7) nel caso di valore numerico aggiungi questo valore alla tua stringa codice finale; nel caso di lettera vai ad estrarre da array_lettere il valore corrispondente all'indice ricavato al punto 6 e poi aggiungi la lettera al tuo codice.

    Per evitare duplicati basta memorizzare i codici in una qualche struttura dati (ad esempio un Vector) e controllare che il codice generato non sia già stato generato... in questo caso ripeti il processo finchè non trovi un codice non estratto ancora. Ma visto che anche gli indici sono estratti in maniera random è raro che capiti un codice duplicato.

    E' più facile a realizzarsi che a spiegarsi
    Al mio segnale... scatenate l'inferno!

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.