Giusto per far vedere che il rumore elettronico può non essere così casuale come si pensa, la figura sotto mostra il rumore della tensione di offset di un certo amplificatore in una misura a lungo termine. Le misure sono prese ogni 10 s con un tempo di integrazione di 2 s. La durata complessiva della misurazione è di circa 12 ore.
Il rumore non è chiaramente bianco con correlazioni ben visibili.
Generare un numero random
Moderatore:
Paolino
16 messaggi
• Pagina 2 di 2 • 1, 2
0
voti
It's a sin to write
instead of
(Anonimo).
...'cos you know that
ain't
, right?
You won't get a sexy tan if you write
in lieu of
.
Take a log for a fireplace, but don't take
for
arithm.
instead of
(Anonimo)....'cos you know that
ain't
, right?You won't get a sexy tan if you write
in lieu of
.Take a log for a fireplace, but don't take
for
arithm.-

DirtyDeeds
55,9k 7 11 13 - G.Master EY

- Messaggi: 7012
- Iscritto il: 13 apr 2010, 16:13
- Località: Somewhere in nowhere
0
voti
Mi è venuto in mente che se un microcontrollore ha una EEPROM a bordo, ci si potrebbe memorizzare il seme del generatore per il prossimo riavvio, in modo che non dipenda dalla sequenza di accensione, che è sempre uguale.
Per esempio si potrebbe implementare un "contatore di riavvii", incrementarlo in EEPROM ad ogni riavvio, e utilizzarlo come seme. A lungo termine questo seme assumerà tutti i valori possibili con uguale probabilità (anche se saranno molto prevedibili).
Penso che bisognerebbe scartare i primi numeri casuali generati (forse due o tre, ma bisogna provare) per evitare che le sequenze comincino ogni volta in modo simile.
Se durante il funzionamento il micro riceve input dall'ambiente in momenti più o meno casuali, si potrebbero sfruttare per rendere imprevedibile il prossimo seme (anche se non ne migliorano le qualità statistiche).
Per esempio, avendo come periferica una tastiera, alla seconda o terza pressione di un tasto si potrebbe sommare a un valore in EEPROM un contatore di tempo trascorso dal riavvio. Successivamente, per non stressare troppo la EEPROM scrivendola troppo, si potrebbe aggiornare questo valore ogni 100 o 1000 tasti premuti, sommandogli ogni volta il contatore di tempo trascorso. Al riavvio si potrebbe utilizzare come seme questo valore, sommato al numero di riavvii (per preservare la equiprobabilità statistica).
Naturalmente tutte le somme vanno ridotte "modulo" il numero massimo di valori del seme.
Spero di non aver scritto castronerie, soprattutto per la parte statistica. Chiedo umilmente un parere ai più esperti.
Per esempio si potrebbe implementare un "contatore di riavvii", incrementarlo in EEPROM ad ogni riavvio, e utilizzarlo come seme. A lungo termine questo seme assumerà tutti i valori possibili con uguale probabilità (anche se saranno molto prevedibili).
Penso che bisognerebbe scartare i primi numeri casuali generati (forse due o tre, ma bisogna provare) per evitare che le sequenze comincino ogni volta in modo simile.
Se durante il funzionamento il micro riceve input dall'ambiente in momenti più o meno casuali, si potrebbero sfruttare per rendere imprevedibile il prossimo seme (anche se non ne migliorano le qualità statistiche).
Per esempio, avendo come periferica una tastiera, alla seconda o terza pressione di un tasto si potrebbe sommare a un valore in EEPROM un contatore di tempo trascorso dal riavvio. Successivamente, per non stressare troppo la EEPROM scrivendola troppo, si potrebbe aggiornare questo valore ogni 100 o 1000 tasti premuti, sommandogli ogni volta il contatore di tempo trascorso. Al riavvio si potrebbe utilizzare come seme questo valore, sommato al numero di riavvii (per preservare la equiprobabilità statistica).
Naturalmente tutte le somme vanno ridotte "modulo" il numero massimo di valori del seme.
Spero di non aver scritto castronerie, soprattutto per la parte statistica. Chiedo umilmente un parere ai più esperti.
0
voti
In questo modo però due apparecchiature identiche genererebbero sempre le stesse identiche sequenze.
Un sistema invece è quello di usare il solito contatore il cui valore viene catturato allo spegnimento dell' apparecchiatura, con opportuni accorgimenti circuitali e sempre che questo avvenga in modo casuale, chesso' tramite intevento umano. Il dato sarebbe davvero casuale ed una serie di questi dati potrebbe essere usata come magazzino di semi per inizializzare le sequenze pseudo random.
In pratica se non ci si infila in qualche modo una vera casualità non ci sono sistemi che tengono.
Un sistema invece è quello di usare il solito contatore il cui valore viene catturato allo spegnimento dell' apparecchiatura, con opportuni accorgimenti circuitali e sempre che questo avvenga in modo casuale, chesso' tramite intevento umano. Il dato sarebbe davvero casuale ed una serie di questi dati potrebbe essere usata come magazzino di semi per inizializzare le sequenze pseudo random.
In pratica se non ci si infila in qualche modo una vera casualità non ci sono sistemi che tengono.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
Comunque, nella generazione dei numeri casuali bisogna sempre tenere presente qual è l'obiettivo per cui vengono generati.
Per esempio, se dovessi fare un'analisi con metodo Montecarlo, potrei magari aver bisogno di generare una sequenza di 10 milioni di numeri casuali che abbia delle buone proprietà statistiche (che vuol dire: assomigli ragionevolmente a un rumore bianco), ma posso anche non preoccuparmi troppo del seme iniziale (o posso lasciarne libera la scelta).
Per esempio, se dovessi fare un'analisi con metodo Montecarlo, potrei magari aver bisogno di generare una sequenza di 10 milioni di numeri casuali che abbia delle buone proprietà statistiche (che vuol dire: assomigli ragionevolmente a un rumore bianco), ma posso anche non preoccuparmi troppo del seme iniziale (o posso lasciarne libera la scelta).
It's a sin to write
instead of
(Anonimo).
...'cos you know that
ain't
, right?
You won't get a sexy tan if you write
in lieu of
.
Take a log for a fireplace, but don't take
for
arithm.
instead of
(Anonimo)....'cos you know that
ain't
, right?You won't get a sexy tan if you write
in lieu of
.Take a log for a fireplace, but don't take
for
arithm.-

DirtyDeeds
55,9k 7 11 13 - G.Master EY

- Messaggi: 7012
- Iscritto il: 13 apr 2010, 16:13
- Località: Somewhere in nowhere
0
voti
TardoFreak ha scritto:In questo modo però due apparecchiature identiche genererebbero sempre le stesse identiche sequenze.
...
In pratica se non ci si infila in qualche modo una vera casualità non ci sono sistemi che tengono.
Concordo che se è necessaria imprevedibilità serve un "input" esterno.
Come ho scritto, per aggiungere imprevedibilità si possono sfruttare gli istanti in cui si verificano pressioni di tasti su una tastiera (o altri eventi) per scrivere in EEPROM un numero imprevedibile. Al seguente riavvio questo numero si può poi sommare al contatore di riavvii, e usare il risultato come seme "imprevedibile" e "equiprobabile". Penso che potrebbe funzionare.

0
voti
Si, quello funziona.
L' importante è che il contatore che cattura viaggi ad una velocità di molto superiore al tempo minimo umano, che mi pare sia quello di trasmissione di un segnale su un nervo e che, se non ricordo male, vale 1ms. (o 4ms. ? boh).
Diciamo che un contatore che s' incrementa ogni 100us avrebbe senso.
L' importante è che il contatore che cattura viaggi ad una velocità di molto superiore al tempo minimo umano, che mi pare sia quello di trasmissione di un segnale su un nervo e che, se non ricordo male, vale 1ms. (o 4ms. ? boh).
Diciamo che un contatore che s' incrementa ogni 100us avrebbe senso.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
16 messaggi
• Pagina 2 di 2 • 1, 2
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 6 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)