Newsgroup: it.comp.software.emulatori
Titolo: [C64] Numeri casuali con il SID

Qualcuno puo' darmi un link o una dritta per generare (da basic) numeri
casuali tramite il generatore di rumore del SID del c64?
Thanks in advance,
bye G.L.

 casuali tramite il generatore di rumore del SID del c64?
la funzione RND ;)
Saluti,
Dott. Piergiorgio.
P.s per caso devi fare one-time pads ? ;)

 P.s per caso devi fare one-time pads ? ;)
No (che sono?). Mi servono dei numeri *realmente* casuali, per
giocare... al lotto. ;-) Ovviamente sto usando un C64 _vero_.
bye G.L.

fare a usare il SID tramite peek&poke.  :-)
Praticamente tutti i generatori di numeri casuali seguono una
sequenza, ma c'e' sempre un modo per "casualizzare" la sequenza che
viene imboccata, ottenendo cosi' appunto una sequenza casuale (es.
RANDOMIZE TIMER, sul C64 non mi ricordo il formato di RND o cosa
passare dentro per avere numeri "il piu' possibile" casuali)

 P.s per caso devi fare one-time pads ?
quelli di "Quarto protocollo"?
-- 
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
http://www.boincsynergy.com/images/stats/comb-2591.jpg

 passare dentro per avere numeri "il piu' possibile" casuali)
Si, sono al corrente che puoi inizializzare il generatore, ma a me
interessa la casualita', ben piu' vicina ad una casualita' "vera",
data del generatore di rumore del SID.  :-)
bye G.L.

 numeri casuali tramite il generatore di rumore del SID del c64?
       *= $0334
       LDA #$81
       STA $D412 ; Random Noise Waveform + Gate Bit
       STA $D40F ; 3rd voice frequency high byte
loop
       LDA $D41B ; Oscillator 3/Random Number Generator
       STA $0400,X
       INX
       JMP loop
traduci tu in poke e peek
-- 
-=[]=--- iAN CooG/HokutoForce ---=[]=-
Ma chi e' che va costruendo quadrati sull'ipotenusa?

> sequenza, ovvero sono pseudocasuali). E' per questo che chiedo come
no, leggi la documentazione (dalla PRG)
  RND
  TYPE: Floating-Point Function
  FORMAT: RND (<numeric>)
    Action: RND creates a floating-point random from 0.0 to 1.0. The
  computer generates a sequence of random numbers by performing cal-
  culations on a starting number, which in computer jargon is called a
  seed. The RND function is seeded on system power-up. The <numeric>
  argument is a dummy, except for its sign (positive, zero, or negative).
    If the <numeric> argument is positive, the same "pseudorandom"
  sequence of numbers is returned, starting from a given seed value. Dif-
  ferent number sequences will result from different seeds, but any se-
  quence is repeatable by starting from the same seed number. Having a
  known sequence of "random" numbers is useful in testing programs.
    If you choose a <numeric> argument of zero, then RND generates a
  number directly from a free-running hardware clock (the system "jiffy
  clock"). Negative arguments cause the RND function to be re-seeded
  with each function call.
-- 
-=[]=--- iAN CooG/HokutoForce ---=[]=-
C= is better than C++


Sempre riguardo la generazione di numeri random ti rimando a 2 thread su
Ready64
Generatore pseudorandom, basato sullo studio di Whiteflame/ONS
http://ready64.altervista.org/forum/index.php?showtopic=1001
Disassemblato commentato della funzione RND() del basic
http://ready64.altervista.org/forum/index.php?showtopic=534&st=15
-- 
-=[]=--- iAN CooG/HokutoForce ---=[]=-
Nuovo Windows NP (non pervenuto)

 quelli di "Quarto protocollo"?
Non so se quanto scritto nel libro di Forsyth sia quello che dici, 
comunque era un modo ironico per chiedere cosa ne faceva di numeri 
assolutamente casuali (a questa del lotto sinceramente non credo...) e 
cmq, non e' tanto il numero totalmente casuale che da' forza alla 
cifratura quanto l' algoritmo di cifratura, ed un algoritmo di cifratura 
valido sicuramente ci metterebbe un bel po' su un 64.
E comunque, restano sempre molto più validi i _codici_ che i _cifrari_ , 
specie adesso che un codebook puo' stare in una memorietta flash, a 
prova di guardiamarina fresco d' accademia ;) L' "Enigma" finale sarebbe 
un comp dotato di doppio livello, cifra e codifica, entrambi facilmente 
aggiornabili, anche come algoritmi, per mezzo di schedine facilmente 
distruggibili se necessario; unico inconveniente delle schedine, e' che 
stanno facilmente in una valigetta diplomatica :(
Scusate la digressione....
Saluti,
Dott. Piergiorgio.

 traduci tu in poke e peek
TNX! Anche se, googlando in questi giorni, avevo letto da qualche
parte era possibile solo in linguaggio macchina (avrei capito
se ci fossero stati problemi di timing... ma sarebbe vero?)
(l'avrei fatto tranquillamnte in assembly, ma a distanza di
venti/ventitre anni sono diventato un po pigro...)  ;-)
bye G.L.

 seed. The RND function is seeded on system power-up.
Uhm, IMHO no (ma potrei aver capito male...). Sul _vero_ c64 che ho
sotto mano, senza dargli il seed con "X = RND(-TI)", il primo numero
generato e' sempre lo stesso (e lo stesso anche su quello emulato).
bye G.L.

 generato e' sempre lo stesso (e lo stesso anche su quello emulato).
rnd(0) usa il CIA timer per fare il reseed ad ogni estrazione.
rnd(-seed) forza il reseed con il valore (assoluto) dato come parametro
rnd(+qualsiasivalore) garantisce l'estrazione di valori che partono sempre
dall'ultimo seed generato dal rnd(-seed)
quindi
10 x=rnd(-ti)
20 for x=1to 20:?rnd(1);:next
corrisponde a
10 for x=1to 20:?rnd(0);:next
e non sono mai uguali ad ogni lancio del programma.
Ovvio che se li lanci da VICE, chiudendo e riaprendo l'emulatore ogni volta,
il timer avra' SEMPRE lo stesso valore al lancio del programma. Fai partire
la generazione dei numeri random dopo un attesa di un tasto, per garantire
una completa casualita' del seed iniziale.
-- 
-=[]=--- iAN CooG/HokutoForce ---=[]=-
Embolo: Ottavo nano morto in una pozzanghera.

 se ci fossero stati problemi di timing... ma sarebbe vero?)
no funziona anche da basic, solo che e' piu' lento. Te lo traduco io va. ;)
10 poke$d412,$81:poke$d40f,$81
20 poke$0400+i,peek($d41b):i=i+1and$ff:goto20
per usare l'hex da basic usa una rom Speeddos o una cart
Actionreplay/TheFinalReplay etc. altrimenti convertili in decimale.
-- 
-=[]=--- iAN CooG/HokutoForce ---=[]=-
Qst frm ` stt cmprss pr rsprmr spz.

 e non sono mai uguali ad ogni lancio del programma.
Ok, io lanciavo sempre e solo rnd(1).  :-)
bye G.L.