Carissimo, il tuo problema è legato strettamente ad una questione di ordine logico nonchè ad una piccola limitazione (se così la si può chiamare) hardware; Mi spiego: quando cerchi di generare un numero casuale, accade che il tuo caro oggettino richiama una particolare funzione chiamata generatore dei numeri casuali; si tratta in pratica di un timer che viene avviato e che ha lo scopo di incrementare una variabile contatore che sarà utilizzata per restituirti il valore casuale cercato; in particolare il processore, (che richiama la suddetta funzione in sotto forma di interrupt), fà ripartire il contatore ogni volta che viene richiesto l'accesso al generatore;
detto questo il tuo problema consiste nel fatto che ogni volta che richiami la function che calcola il numero casuale, tu istanzi ogni volta un nuovo oggetto random, il che porta alla ripartenza del contatore legato al generatore dei numeri casuali; ciò significa che i tempi di generazione sono sempre gli stessi ; la tua soluzione è quindi quella di dichiarare e istanziare l'oggetto all'interno della classe e non nella tua function; ciò dovrebbe far ripartire il generatore una sola volta e contribuire quindi a risolvere il tuo problema.
Se hai ancora dei problemi, fammelo sapere
(per avere più chiare le idee su questo particolare processo, analizza il seguente codice VB e la funzione randomize )
Dim MyValue As Integer
Randomize ' Initialize random-number generator.
MyValue = CInt(Int((6 * Rnd()) + 1)) ' Generate random value between 1 and 6.
Ciao, spero di esserti stato di aiuto e che soprattutto sia "UN" aiuto