|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2003
Città: Grosseto/Pisa
Messaggi: 2537
|
Random - Il paradosso
Allora raga, questo è un dubbio serio.
Prendiamo un qualsiasi linguaggio di programmazione e pensiamo alla funzione random. LA funzione random (n) sceglie un numero (mettiamo intero per semplificare) da 0 a n. Ora mettiamo che voglio costruirmi una funzione random, senza usare il comando random.... |NON POSSO| Perche qualunque serie di operazioni faccia per generare un numero casuale, genrerà sempre quel numero, o una serie di numeri sempre uguale. Quindi non posso creare un numero random senza la funzione random. MA COME FA ALLORA AD ESISTERE STO BENEDETTO ALGORITMO DEL RANDOM?! é insito nel processore?HA un sistema di biglie che ne sceglie una a caso e nessuno celo ha mai detto?! Risolvetemi sto dubbio che da solo non ci sono riuscito ![]() ![]()
__________________
[IMG]pd[/IMG] |
![]() |
![]() |
![]() |
#2 | |
Bannato
Iscritto dal: Aug 2004
Città: Roma Status:Superutente Messaggi totali:38335 Auto:Fiat Stilo 1.9 MJT Moto:Ducati Sport 900 IE
Messaggi: 1524
|
Re: Random - Il paradosso
Quote:
Insomma, credo che ci sia un contatore che fa, mettiamo 1-1000 andando avanti di uno ogni ciclo di clock; quando tu chiedi RAND lui ti restituisce il valore attuale. LuVi |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2001
Messaggi: 1910
|
sposto nella sezione scienza e aggiungo un piccolo contributo
http://www.dis.uniroma1.it/~alberto/...ri_casuali.pdf |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 1655
|
Credo di aver letto che ci sono delle fomule per generare numeri definiti pseudo-casuali...
Non ho idea di come queste formule possano apparire, ma se non si cambia il numero di partenza (ovvero il "seed" di cui parla Lucio, il seme ![]() Come sono andati gli esami??? |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 1944
|
Codice PHP:
![]()
__________________
"Oggi è una di quelle giornate in cui il sole sorge veramente per umiliarti" Chuck Palahniuk Io c'ero |
![]() |
![]() |
![]() |
#6 |
Bannato
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 964
|
la funzione random ( ti faccio un esempio in C/C++ ) genera sempre lo stesso numero.
per questo si usa prima la SRAND((UNSIGNED)TIME(NULL)) in quanto preleva l'ora di sistema ed essendo sempre diversa il numero cambia. non ricordo il procedimento ma ovviamente la rand() utilizza l'ora di sistema. cambiando essa cambia anche il numero generato ![]() |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 1944
|
Quote:
Il seed è la X0 La X1 viene calcolata dalla X0 con una particolare funzione. La X2 viene calcolata dalla X1 e dalla X0 etc etc etc al verificarsi di certe condizioni, l'algoritmo restituisce il suo valore attuale. Se le condizioni dipendono dal seed, è possibile fare in modo che con seed diversi l'algoritmo dia risultati diversi ![]() E difatti il seed viene spesso inizializzato con il tempo attuale del sistema per questo motivo.
__________________
"Oggi è una di quelle giornate in cui il sole sorge veramente per umiliarti" Chuck Palahniuk Io c'ero |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 1655
|
Quote:
|
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Mar 2004
Città: Verona
Messaggi: 2361
|
io avevo letto di una particolare scheda PCI che genera il random puro usando dei generatori quantistici a fotoni o una roba simile
![]() ps: anche a voi lo shuffle (random delle canzoni) di winamp fa così schifo? su 3000 mp3 mi riproduce sempre gli stessi... non capisco, veramente... ![]() |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
non ci può essere la vera casualità all'interno di un computer
![]() |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 1944
|
Quote:
x[n] = (1/3)x[n-1] + 11x[n-2] - (1/17)x[n-3] - 18.99x[n-4]. n appartiene ai naturali, quindi calcolerai x[0], x[1], x[2], .... non esiste x[2.4] ![]() Il problema è iniziare a fare questo calcolo: se non hai un x[0] non puoi calcolare nulla. Allora poni x[0] = seed e poi x[1] = 1/3 seed + 0 - 0 - 0 (ho posto x[-1] x[-2] x[-3] a zero) x[2] = 1/3 x[1] + 11 seed - 0 - 0 .... .... .... Quando fermare te lo dicono le condizioni. Questo è la base di un algortimo random che vidi tempo fa, ma probabilmente ne esistono molti diversi. Per esempio, un numero random lo puoi vedere come un array di cifre. Puoi prendere n crifre ordinate, generate fra 0 e n sequenzialmente, applicarvi un algoritmo che fra scrambling, e ottenere le stesse cifre poste casualmente. Un noto algoritmo che fa scrambling è un pezzo di un altrettanto noto algoritmo di ordinamento ![]()
__________________
"Oggi è una di quelle giornate in cui il sole sorge veramente per umiliarti" Chuck Palahniuk Io c'ero |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Oct 1999
Messaggi: 3780
|
Quote:
e' sufficiente pescare fuori dal PC ... ad esempio PGP per creare un numero VERAMENTE casuale ti fa muovere il mouse in giro per qualche metro ... Comunque se non ricordo male i processori attuali (mi pare dal PIII in poi) hanno una funzione di "Random" codificata in hardware. Questa funzione pesca il valore amplificando il "rumore bianco" fatto da una giunzione di un diodo a riposo , il rumore bianco e' una conseguenza dell' agitazione termica degli atomi stessi che compongono la giunzione , quindi totalmente imprevedibile. |
|
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9947
|
Nelle funzioni di random in genere ti danno l'occasione di scegliere il seme della sucessione che sarà poi sviluppata.
Solitamente lo prendono dal timer. Questi numeri non sono numeri casuali, ma pseudocasuali che hanno cmq valore nei test scientifici nel caso di test su grandi numeri tipo il gioco di Monty Hall.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Apr 2003
Città: Grosseto/Pisa
Messaggi: 2537
|
impressionante
![]() ![]()
__________________
[IMG]pd[/IMG] |
![]() |
![]() |
![]() |
#16 | |
Bannato
Iscritto dal: Aug 2004
Città: Roma Status:Superutente Messaggi totali:38335 Auto:Fiat Stilo 1.9 MJT Moto:Ducati Sport 900 IE
Messaggi: 1524
|
Quote:
![]() LuVi |
|
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Jun 2003
Città: Brescia
Messaggi: 401
|
Quote:
![]() ![]() |
|
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Nov 2002
Città: Singularity
Messaggi: 894
|
Quote:
![]()
__________________
echo 'main(k){float r,i,j,x,y=-15;while(puts(""),y++<16)for(x=-39;x++<40;putchar(" .:-;!/>"[k&7])) for(k=0,r=x/20,i=y/8;j=r*r-i*i+.1, i=2*r*i+.6,j*j+i*i<11&&k++<111;r=j);}'&>jul.c;gcc -o jul jul.c;./jul |Only Connect| "To understand is to perceive patterns" Isaiah Berlin "People often speak of their faith, but act according to their instincts." Nietzsche - Bayesian Empirimancer - wizardry |
|
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Jan 2003
Città: Brianza
Messaggi: 2687
|
avete risolto un dubbio che mi assilla da mesi
![]() anche io non capivo come potessere esistere il random all'interno del computer... ora un'idea (anche se vaga ![]() ![]() mitici!! ![]()
__________________
"Le prime giornate di un europeo in America possono essere paragonate alla nascita di un uomo." Franz Kafka
"Don't cry because it's over. Smile because it happened." Theodor Geisel |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:35.