PDA

View Full Version : [C] generare numeri casuali senza ripetizioni


gepeppe
01-06-2008, 10:21
Salve, dovrei generare 4 numeri casuali, evitando le ripetizioni, da 0 a 13. Io avevo pensato alla funzione "rand() % 14", solo che per evitare le ripetizioni dovrei controllare prima il valore che mi ritorna con il valore delle altre 3 variabili (uscite in precedenza)...però mi stò un po perdendo e non sò bene come fare!! anche perchè all'inizio tutte le altre variabili valgono 0... :confused:

mi date un aiutino?? :D

-Slash
01-06-2008, 12:31
la prima cosa che mi viene in mente è di memorizzare i numeri usciti in un array ed ogni volta che "estrai" un numero andare a controllare con un ciclo for che non sia uscito...

71104
01-06-2008, 14:11
concettualmente devi creare una permutazione. prepara un array da 14 locazioni in cui la locazione i-esima (i da 0 a 13) contiene il numero i; dopodiché estrai più volte coppie di posizioni casuali con rand e scambia i numeri delle posizioni estratte. se la funzione di estrazione random è distribuita uniformemente ti saranno sufficienti 14 swap.