Quando un utente aggiunge un nuovo elemento nel mio sistema, voglio produrre un codice pseudo-casuale a 7 cifre non incrementale unico per quell'elemento. Il numero di elementi creati sarà numerato solo in migliaia (< 10.000).Come posso creare un codice univoco a 7 cifre per un'entità?
Perché ha bisogno di essere unico e non ci sono due elementi con le stesse informazioni, potrei usare un hash, ma deve essere un codice che possono condividere con altre persone - da qui le 7 cifre.
Il mio pensiero originale era solo quello di ripetere la generazione di un numero casuale, controllare che non fosse già utilizzato, e se lo fosse, risciacquare e ripetere. Penso che questa sia una soluzione ragionevole, anche se sgradevole, data la bassa probabilità di collisioni.
Le risposte a this question suggeriscono di generare un elenco di tutti i numeri non utilizzati e di mischiarli. Probabilmente potrei tenere una lista come questa in un database, ma stiamo parlando di 10.000.000 di voci per qualcosa di relativamente poco frequente.
Qualcuno ha un modo migliore?
'statico int i = 9999999; int get_non_increasing_unique_code (void) {return i -;}' – kennytm
@Kenny: Ha ha ha ... –
@Kenny: +1 per farmi ridere :) – Damovisa