Newsgroup: it.comp.lang.c
Titolo: Casualita' nel C

Salve,
volevo sapere se int rand(void) e' l'unico modo per avere numeri
"casuali" o se c'e' qualcosa veramente "randomly"
Grazie.
Alla prossima,
Giovanni Cappellini
http://giovacappo.cjb.net
ICQ 166932196


non può esistere una vera e propria funzione di Randomize pura (e questo
indipendentemente dal linguaggio usato)
puoi solo crearti sulla base del seme una pseudo randomize.

puoi solo crearti sulla base del seme una pseudo randomize.
Mi pareva che i miei compagni di corso mi avevano detto una
cretinata...


 cretinata...
Invece a quanto ne sò una piccola possibilità c'è. I processori di nuova
generazione hanno nel chip una sorta si sensore che le gge la temperatura,
o cose simili, e quelli sono valori Random puri, veri. Solo cerca nei siti
dei produttori, e cmq sei legato ha dei processori specifici. Mi spiace, ma
di più non sò :\.
Salutoni
Giacomo Succi

 di più non sò :\.
ma non si potrebbero usare ingressi analogici (audio in) come sorgenti di
rumore casuale?
Raffaele

 Raffaele
d'accordo ma sono sempre segnali in ingresso alla macchina e non veri e
proprie funzioni
se è per questo puoi leggerti il numero di giri della ventola o  i tempi di
accesso al floppy altre cavolate simili
la casualità pura sul digitale non può esistere per principio
sui vecchi computer analogici (quelli a valvole tanto per capirci) fu
tentato un esperimento ma non ricordo se l'esito fosse stato riconosciuto
valido.
se non sbaglio (ma le cavolate sono in agguato) è stato cercato di ottenere
qualcosa con i transistor plastici  (quelli che cambiano di caratteristiche
sotto pressione o temperatura).

 rumore casuale?
In teoria si`,  ma e` molto rischioso. Di solito quello  che registri e`
il  fruscio a  50-60Hz  della rete  elettrica (o  cmq  un segnale  molto
correlato a questo).
Per il  post sopra i RNG  si trovano nei  chipset AMD 768 e  Intel i8x0.
Quello che leggono e` il  rumore elettromagnetico. In ogni caso l'output
viene prima  passato attraverso l'SHA,  giusto per rimescolare un  po' i
bit.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"New processes are created by other processes, just like new
 humans. New humans are created by other humans, of course,
 not by processes." -- Unix System Administration Handbook

 "casuali" o se c'e' qualcosa veramente "randomly"
Usare rand() è il modo peggiore per averli.
Qualcosa di *veramente* "randomly" lo puoi ottenere *soltanto* con
dispositivi fisici appositamente studiati.
Ma se non hai esigenze ultra sofisticate ti posso fornire il codice per
alcuni ottimi generatori (anche crittografici) che ho testato molto
approfonditamente.
Dovresti precisare se te ne serve uno crittografico o per altri scopi.
Cristiano

 temperatura, o cose simili, e quelli sono valori Random puri, veri.
Se ti riferisci a quello interno ai processori intel, purtroppo viene
ritenuto "scarso" da molti ricercatori. Ovviamente è sempre meglio di rand!
:-)
Cristiano

 rimescolare un  po' i bit.
A quanto ne so, a livello hardware viene usato un semplice filtro per
l'unbiasing (non so in italiano come si dice; serve per bilanciare la
probabilità di uscita dei bit a 1 con quelli a 0), ma sta all'utente usare
l'sha (via software).
Cristiano

 "casuali" o se c'e' qualcosa veramente "randomly"
su Linux puoi fare una lettura da /dev/random o da /dev/urandom.
per le differenze vedi random(4)
costa

Ho gia' consegnato il progetto e sostenuto l'esame, grazie a chi mi ha
offerto l'aiuto.
Il mio uso richiedeva una probabilita' del 50%, tipo testa o croce,
cosi' ho pensato di prendere un numero da rand(), aggiungerci tutti i
valori delle variabili intere *in quel momento* e fare % 2.
