[C] Disegni e grafici
come si puo fare dei disegni con il linguaggio c
utilizzando il grafico cartesiano ?
cosi potrei controllare se srand() e rand() funzionano correttamente !
verificando che i punti sul grafico sono omogenei !
si puo fare ?
grazie della risposta !
utilizzando il grafico cartesiano ?
cosi potrei controllare se srand() e rand() funzionano correttamente !
verificando che i punti sul grafico sono omogenei !
si puo fare ?
grazie della risposta !
Risposte
Credo che sia molto più facile stampare i numeri su un file e poi caricarlo con un programma come Matlab o anche Excel per farti il grafico. Se no puoi dare un occhiata a gnuplot.
rand() non è comunque famoso per generare numeri particolarmente buoni, lo standard pone molte poche restrizioni sul suo funzionamento e la sua implementazione è normalmente tutt'altro che ottimale. Il tuo test non è comunque particolarmente buono per testare la qualità di un generatore di numeri casuali.
rand() non è comunque famoso per generare numeri particolarmente buoni, lo standard pone molte poche restrizioni sul suo funzionamento e la sua implementazione è normalmente tutt'altro che ottimale. Il tuo test non è comunque particolarmente buono per testare la qualità di un generatore di numeri casuali.
http://cimg.sourceforge.net/
CImg è una libreria fantastica per lavorare con le immagini come fossero matrici
è per c++ non c ma è intuitiva lo stesso
tempo fa avevo fatto un programmino che tracciava un grafico se lo ritrovo lo posto
io tempo fa per curiosita avevo provato a fare una prova
avevo stampato n numeri attraverso rand da 0 a 9 e semplicemente li ho messi in percentuale
se non utilizzavo srand rand da solo i risultati erano sempre gli stessi ... (IMHO abbastanza per dimostrare che non genera numeri random ma solo un periodico molto lungo)
se inizializzavo il seme srand(time(NULL)) cosi gia funzionava
se una persona è su linux puo usare /dev/random
(SE NON SBAGLIO) utilizza dati come gli spostamenti del mouse o i tasti premuti per generare numeri che (dato provengono dal mondo reale xD) si possono davvero definire aleatori
CImg è una libreria fantastica per lavorare con le immagini come fossero matrici
è per c++ non c ma è intuitiva lo stesso
tempo fa avevo fatto un programmino che tracciava un grafico se lo ritrovo lo posto
io tempo fa per curiosita avevo provato a fare una prova
avevo stampato n numeri attraverso rand da 0 a 9 e semplicemente li ho messi in percentuale
se non utilizzavo srand rand da solo i risultati erano sempre gli stessi ... (IMHO abbastanza per dimostrare che non genera numeri random ma solo un periodico molto lungo)
se inizializzavo il seme srand(time(NULL)) cosi gia funzionava
se una persona è su linux puo usare /dev/random
(SE NON SBAGLIO) utilizza dati come gli spostamenti del mouse o i tasti premuti per generare numeri che (dato provengono dal mondo reale xD) si possono davvero definire aleatori
"encelado":
http://cimg.sourceforge.net/
CImg è una libreria fantastica per lavorare con le immagini come fossero matrici
è per c++ non c ma è intuitiva lo stesso
tempo fa avevo fatto un programmino che tracciava un grafico se lo ritrovo lo posto
io tempo fa per curiosita avevo provato a fare una prova
avevo stampato n numeri attraverso rand da 0 a 9 e semplicemente li ho messi in percentuale
se non utilizzavo srand rand da solo i risultati erano sempre gli stessi ... (IMHO abbastanza per dimostrare che non genera numeri random ma solo un periodico molto lungo)
se inizializzavo il seme srand(time(NULL)) cosi gia funzionava
se una persona è su linux puo usare /dev/random
(SE NON SBAGLIO) utilizza dati come gli spostamenti del mouse o i tasti premuti per generare numeri che (dato provengono dal mondo reale xD) si possono davvero definire aleatori
mi piacerebbe avere il programmino !
Il Mersenne Twister (MT) è un RNG sviluppato nel 1997 da Makoto Matsumoto e
Takuji Nishimura. Le sue caratteristiche lo rendono ad oggi uno dei metodi più
efficaci ed efficienti per le generazione di numeri casuali.
lo perso da un trasferimento a un altro.....
potrei anche rifarlo sono che bisogna passare alcuni parametri al compilatore (penso scheda video ecc..) e non mi ricordo come si fa...
2 anni senza toccare una linea di codice e ho gia dimenticato il 50 % ..... (quando avro un po di tempo posso vedere se riesco a fare qualcosa.... )
cmq lidea di apatriarca
penso vada molto bene....
[ot]qualcuno conosce lo standard PNG delle imamgini?
una volta sapevo farle ... avevo anche fatto un generatore di frattali ...
:@ mi odio [/ot]
potrei anche rifarlo sono che bisogna passare alcuni parametri al compilatore (penso scheda video ecc..) e non mi ricordo come si fa...
2 anni senza toccare una linea di codice e ho gia dimenticato il 50 % ..... (quando avro un po di tempo posso vedere se riesco a fare qualcosa.... )
cmq lidea di apatriarca
penso vada molto bene....
[ot]qualcuno conosce lo standard PNG delle imamgini?
una volta sapevo farle ... avevo anche fatto un generatore di frattali ...
:@ mi odio [/ot]
Hai provato a dare un occhiata su http://www.libpng.org/pub/png/?
In che senso devi settare dei parametri della scheda video? Forse non ho capito bene il tuo programma ma mi sembrava di aver capito che facessi qualcosa come memorizzare il numero di volte che un singolo numero era comparso e poi visualizzare le percentuali (forse per questo ultimo passo avevi fatto qualcosa?). Il generatore di numeri casuali migliore dipende comunque dall'applicazione. Un semplice test come questo non è accettabile in molte applicazioni.
In che senso devi settare dei parametri della scheda video? Forse non ho capito bene il tuo programma ma mi sembrava di aver capito che facessi qualcosa come memorizzare il numero di volte che un singolo numero era comparso e poi visualizzare le percentuali (forse per questo ultimo passo avevi fatto qualcosa?). Il generatore di numeri casuali migliore dipende comunque dall'applicazione. Un semplice test come questo non è accettabile in molte applicazioni.
no nel senso che bisogna passare degli argomenti al compilatore...
ho provato a cercare nel makefile degli esempi ma non trova la liberia xlib.h e simili 0.o ??
quando ero su slackware era tutto più semplice...
:'(
cmq ho rifatto la prova che avevo fatto tempo fa
ho provato a cercare nel makefile degli esempi ma non trova la liberia xlib.h e simili 0.o ??
quando ero su slackware era tutto più semplice...
:'(
cmq ho rifatto la prova che avevo fatto tempo fa
c[0] = 9% c[1] = 10% c[2] = 9% c[3] = 9% c[4] = 10% c[5] = 9% c[6] = 10% c[7] = 9% c[8] = 10% c[9] = 10%è random xD
Quanti numeri hai generato? Quale compilatore e su quale piattaforma hai fatto il test? Utilizzando Visual C++ 2008 su Windows Server 2008 e 10000000 numeri generati ho ottenuto i seguenti che in effetti sono abbastanza simili ai tuoi:
Non si tratta comunque di un test particolarmente valido dal punto di vista matematico.
frequenza 0: 1000500 frequenza 1: 1000304 frequenza 2: 1000174 frequenza 3: 999646 frequenza 4: 999184 frequenza 5: 1000683 frequenza 6: 998970 frequenza 7: 999581 frequenza 8: 1001355 frequenza 9: 999603
Non si tratta comunque di un test particolarmente valido dal punto di vista matematico.
"apatriarca":
Non si tratta comunque di un test particolarmente valido dal punto di vista matematico.

sono aperto a suggerimenti non mi viene in mente niente di particolare per dimostrare che un numero sia random
se non verificare che ha la stessa possibilita di uscita di un altro numero...
te vorresti dimostrarlo direttamente dall'algoritmo che lo genera?
io mi sono fermato a 1000000
gcc version 4.3.3
2.6.28-13-generic i686 GNU/Linux
“La generazione dei numeri casuali è
troppo importante per essere lasciata al
caso”
http://www.cash-cow.it/appunti-universi ... ri-casuali
i Random Number Generators devono avere delle caratteristiche che determinano la qualita dei numeri generati
Efficienza, Ripetibilità
e Portabilità ecc ecc
per questo con un piano cartesiano abbastanza grande si puo testare "il prodotto del algoritmo"
no ?
ciao
troppo importante per essere lasciata al
caso”
http://www.cash-cow.it/appunti-universi ... ri-casuali
i Random Number Generators devono avere delle caratteristiche che determinano la qualita dei numeri generati
Efficienza, Ripetibilità
e Portabilità ecc ecc
per questo con un piano cartesiano abbastanza grande si puo testare "il prodotto del algoritmo"
no ?
ciao