Sto cercando un algoritmo efficiente per ottenere quantità x (non ripetute) univoche di numeri casuali interi che rientrano nei limiti y e z.
es. Voglio x numeri interi casuali x che sono maggiori o uguali a y, minori o uguali a z e ogni numero casuale non viene ripetuto.
Ho trovato due soluzioni ma nessuna di queste sembra efficiente per me.
Una soluzione è presente ogni volta che ottengo un numero casuale dal mio generatore. Controllo se quel numero è stato creato prima. Se sì prendine una nuova, se no aggiungila nella mia lista. Questa soluzione non sembra affatto efficiente all'aumentare della quantità di numeri necessari. Inoltre, teoricamente, potrebbe continuare a looping indefinitamente (anche se non è probabile).
Un'altra soluzione che ho trovato è quella di mantenere tutti i numeri possibili in una lista e il mio generatore mi darà la posizione per rimuovere un numero dalla lista. Quindi non avrò mai un numero duplicato anche se il generatore creerà lo stesso numero due volte del numero che era lì la prima volta in quella posizione sarà rimosso dalla lista. Ma anche questo algoritmo non mi sembra efficiente.
Esiste un modo più efficiente per fare ciò che garantisce il completamento e l'unicità dei numeri casuali generati?