Ready64 Forum
Commodore 64 => Aiuto & Domande => Topic aperto da: kletos - 05 Maggio 2015, 17:48:30
-
Ciao a tutti, ho realizzato con l'emulatore CCS64 un piccolo programmino per far generare numeri casuali da 1 a 90, tipo il gioco della tombola. Il programma funziona benissimo, però ho notato che ogni volta che eseguo il run i primi 90 numeri sono sempre gli stessi. Il programma è questo:
5 PRINT CHR$(147)
10 x=INT(100*RND(1)+1)
20 PRINT X
Ho forse dimenticato di inserire qualche comando importante? I numeri non dovrebbero essere veramente casuali?
Qualcuno può aiutarmi? Grazie
-
A parte che il tuo programma non estrae numeri da 1 a 90 ma un numero da 1 a 100, probabilmente stai riavviando ogni volta l'emulatore prima di eseguire il programma, cosicché la sequenza di numeri pseudocasuali è sempre inizializzata allo stesso modo.
RND non "estrae" numeri realmente casuali perché il C64 non possiede un generatore hardware di numeri casuali; i numeri generati via software sono sempre pseudo-casuali e sono sempre riprodotti in una sequenza che deve essere inizializzata in maniera che sia il meno prevedibile possibile, di solito facendo ricorso al valore dell'orologio interno del C64 con RND(-TI), dopo un qualche intervento dell'utente.
Ho spiegato il significato del parametro di RND in questo post:
http://ready64.org/smf/index.php?topic=2695.msg18035#msg18035