Newsgroup: it.comp.ia
Titolo: generare numeri casuali

Salve,
non so se è il NG adatto.. però voelvo sapere se con qualche strumento di IA
(magari automi cellulari o algoritmi genetici) era possibile implementare un
generatore di numeri casuali (e non pseudo-casuali), e se sapevate
indirizzarmi verso qualche fonte di informazione/paper
Grazie
Davide

credo che la genetica applicata ai numeri casuali frattali sia il caso
giusto...
ehm..scusa, confondo...basta un ciclo di 256 numeri?
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


in che senso?
ciao
Davide


wrote:

Ehm... ma i numeri casuali non sono _per definizione_ impossibili da
creare con un algoritmo qualsiasi? Ovvero, non si dice che una
sequenza e' casuale se e' irriducibile, cioe' non puo' essere espressa
in forma piu' compatta? Puo' darsi che mi sbagli,ma a questo punto
comincio ad incuriosirmi.
Se e' come dico, cercare un algoritmo in grado di produrre numeri
casuali non ha senso: dato che l'algoritmo stesso sarebbe - se
esistesse- la negazione della loro casualita'.
Poi, algoritmi genetici? Ma non ti serve una funzione casuale per
estrarre nuovi elementi da sottoporre alla funzione di fitness? E
quindi finiresti per avere un algoritmo che valuta i risultati di un
altro algoritmo (il generatore di numeri pseudocasuali) e saresti
daccapo....
Dimmi se sbaglio.
Ciao,
Anders

 generatore di numeri casuali (e non pseudo-casuali),
Ciao !
Partiamo da un presupposto di informatica teorica:
1) un computer e' una macchina a stati finiti
2) un computer e' una macchina totalmente predicibile
ne consegue che
3) per un computer il concetto di "random" non esiste.
Quindi un "generatore di numeri casuali" non e' contemplato ;-)
Cio' che possiamo fare e' generare dei numeri pseudo-casuali (PRNG Pseudo
Random Number Generation), in maniera tale che:
a) lo stream in uscita sia per quanto possibile assimilabile a rumor bianco
b) non sia facile, ANCHE conoscendo l'algoritmo, indovinare il numero del
passo k+1 conoscendo un certo numero di output dei passi k, k-1, ... k-h.
Su questo ci sono interi trattati, quindi non mi dilungo. Sappi solo che ci
sono metodi piu' o meno robusti per farlo, ma nessuno "totalmente casuale".
Gli automi cellulari sono utilizzati in criptografia per uno scopo molto
simile a questo, ti consiglio una ricerca in proposito.
Ad ogni modo, quando serve della "buona" randomness, si cerca di usare delle
fonti esterne, per esempio:
1) l'input da keyboard e i movimenti del mouse
2) su alcuni elaboratori si usano dei "generatori" di randomness, che
sfruttano qualche fenomeno realmente non predicibile realizzato fisicamente
in hardware per generare una "sorgente" non predicibile
Se hai altri dubbi scrivimi, anche perche' senno' andiamo davvero off-topic
Stefano

 comincio ad incuriosirmi.
Be', in genere basta che la successione di numeri (in un certo range) 
esibisca certe proprieta' statistiche. I numeri pseudocasuali tendono ad 
esibirle solo su un sottoinsieme della successione (la cui cardinalita' si 
chiama "periodo"). Al di fuori del periodo, le proprieta' statistiche non 
sono piu' garantite (puo' essere che la sequenza ricominci, puo' essere che 
esca sempre lo stesso numero, eccetera).
Se ad esempio lanci una moneta perfetta, e registri la successione di 0
=testa/1=croce, essa e' casuale, e (le probabilita' dei risultati di) ogni 
lancio e' indipendente. Su questa base, puoi generare numeri casuali 
arbitrariamente, raggruppando sequenze di risultati e usando una decodifica 
opportuna (ad esempio, raggruppandoli ad 8 8 hai sequenze di byte casuali).
Quindi se attacchi un dispositivo hardware casuale ad un calcolatore, e fai 
attenzione che le sue proprieta' statistiche non siano modificate dal fatto 
di essere attaccato ad un calcolatore :-) (il che puo' richiedere una certa 
cura), eccoti un generatore completamente casuale. I piu' comuni generatori 
producono rumore bianco in una certa banda (che si puo' quindi convertire in 
range numerici usando decodifiche opportune, un po' come con la moneta).
L'e' che un algoritmo pseudocasuale, in quasi tutte le situazioni, costa 
meno e funziona altrettanto bene - questo e' il motivo per cui non vedi 
lava-lamp attaccate a calcolatori per ogni dove (il che, devo dire, e' anche 
positivo per l'estetica ;-).
Tra parentesi, se non ricordo male, nel pentium III di intel c'e' 
esattamente un generatore hardware di numeri casuali che taglia la testa al 
toro. Probabilmente sempre piu' chip delle nuove generazioni li avranno 
incorporati.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

di essere attaccato ad un calcolatore :-)
Gia', ma un calcolatore con un dispositivo casuale non e' piu' un FA o
una MdT.
Ciao,
Anders
DarwinBots
http://digilander.iol.it/darwinbots
Robottini Genetici!

 una sequenza "perfettamente casuale".
Uno dei piu' banali test di randomness e' appunto comprimere la stringa ;)
Tra l'altro quasi tutti gli algoritmi di criptazione sono implementati (come
best practice) premettendo una fase di compressione.
Stefano

 una MdT.
E chi ha parlato di MdT? :-) Peraltro, e' facile estendere la MdT
classica in modo da incorporarlo; e nessuno dice che un "algoritmo
qualsiasi" debba per forza girare su una MdT classica. 
Altrimenti, ne seguirebbe che il pentium III *non* e' un calcolatore -
cos forse sostenbile per motivi piu' di marketing ;-) ma che constrasta
con l'osservazione. :) 


OK visto l'interesse all'argomento dico anche la mia.
I numeri casuali random nel computer vengono generati dal
metodo che si diversifica sempre dall'azione precedente,
che non è altro che po po co co mo mo di meno che il...tempo....
Si ferma sul tempo che desideriamo e quando lo chiediamo e 
attraverso un algoritmo ne risulta un numero che noi chiamiamo
il numero casuale.
è una banalità creare una serie di numeri casuali con una costante
come il tempo...
il programma di criptaggio che ho implementato genera molte tabelle
casuali che identificano la traduzione, posso assicurarvi che è
veramente facile.
Non credo sia niente di tanto difficile, e comunque non vale la
pena di spaccarsi tanto testa a capire la logica di astrazioni
che non esistono.
ciao duido


 Se hai altri dubbi scrivimi, anche perche' senno' andiamo davvero
off-topic
Allora ci vado io off-topic.... ;)
Per generare dei numeri veramente casuali si possono utilizzare diverse
techiche hardware, normalmente si utilizza misurare il rumore jhonson di una
resistenza o (equivalente e piu semplice) il rumore di ingresso di un'
amplificatore.
In altri casi si utilizza misurare effetti termici e poi eseguire operazioni
di un certo tipo che riconducano a distribuzioni di un certo tipo. Ad ogni
modo e necessario stabilire quale è la banda in discussione, e cioè finche
facendo una FFT della stream di dati questo risualta piatto (cioè bianco).
E' chiaro che i metodi da me illustrati mostrano cattive caratteristiche per
produrre segnali a bassa frequenza (per via della ovvia dipendenza dalla
temperatura), ed è altrettanto chiaro che estrapolando molto è possibile
dire che primo o poi nel tempo una sequenza si debba per forza ripetere (per
via del fatto che si tratta di un numero finito di stati).
Spero che a quest'ora non mi siano uscite troppe ca---te :))
Emiliano.

 il numero casuale.
Generare un numero pseudocasuale basandosi sul clock e' equivalente al
suicidio. Non solo applichi un algoritmo (noto) a un ingresso che e'
POTENZIALMENTE noto, ma dato un numero casuale e un intervallo prima del
successivo posso sapere con assoluta certezza quale sara' il numero
successivo.
NESSUN PRNG si basa soltanto sul clock.
Stefano

 successivo.
hai perfettamente ragione, per questo, basta conoscere l'algoritmo e
puoi dedurne la conclusione di qualsiasi risultante casuale...
ma qui stiamo soltanto spostandoci verso la criptazione,
conosci l'algoritmo e deduci i dati che rispondono al numero casuale?
io pensavo si parlasse di produrre dei numeri casuali non di trovare
illusioni sul teorema della casualità
Non esiste nel computer proprio perchè lui stesso si basa su input
concreti per generarne il risultato
capiamoci bene...ma di cosa stiamo parlando, su che riflessioni stiamo
parlando..o ciarlatando?


 parlando..o ciarlatando?
Sull'idea di trovare un algoritmo, se esiste, che generi numeri casuali. La
risposta e': non esiste, al massimo si possono generare sequenze
pseudo-casuali. Stiamo "ciarlatando" su questo, e il tuo intervento ha
proposto una soluzione di cui io ho delineato i punti deboli, cioe' che
genera numeri totalmente predicibili con estrema facilita'.
Stefano

 fisicamente in hardware per generare una "sorgente" non predicibile
Della serie "Fatelo da voi" con una Webcam e l'acquario dei pesci 
rossi! :) 
Bye!

 rossi! :)
ROTFL :)
Stefano

 fonti esterne, per esempio:
per esempio l'input del microfono collegato alla scheda audio  può essere
considerato una buona fonte esterna?
e una bmp presa al volo dalla webcam puntata sul mio acquario  può esserlo?
grazie
Davide

 come il tempo...
Non funziona. Per come sono fatti i calcolatori, le chanches che il tuo
programma si "fermi sul tempo che desideriamo" ad intervalli molto meno
che causali (dando origine a sequenze che tutto sono tranne che casuali)
sono molto alte. 


 e una bmp presa al volo dalla webcam puntata sul mio acquario  puņ
esserlo?
Di nuovo, se la comprimi, credo di si'.
Specie se analizzi le differenze tra un'immagine e la precedente. Pero' non
giurerei sulla validita' :P
La tastiera e' cosi' comoda ^_^
Stefano


lo so :) ma prevede la presenza di una cosa scomoda chiamata utente :)
perquesto pensavo di poterlo sostituire con qualcosa in stile IA :)
ciao!
Davide