Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Abbiamo provato per dieci giorni la Hyundai IONIQ 5 N, con 650 CV, 770 Nm e uno 0-100 km/h in 3,4 secondi. Il suo punto forte è N e-Shift, che simula un cambio a otto rapporti con suoni da motore termico e perfino un bang supersonico
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale
La prima tappa italiana della Road to CES porta a Milano i vertici della Consumer Technology Association, con una nuova griglia di lettura dei trend tecnologici e una posizione netta su dazi e regolamentazione dell'IA
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
OPPO ha appena lanciato sul mercato la nuova serie Find X10, che ha come smartphone premium il Find X10 Pro Max, uno smartphone completo, che fa del comparto fotografico il suo vero punto di forza. Ma sono tante le novità, tra cui l'AI che adesso diventa agentica. Ma andiamo a vedere nel dettaglio questo nuovo smartphone.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-02-2008, 08:17   #1
sylvaticus
Junior Member
 
Iscritto dal: Nov 2007
Messaggi: 21
[C++] Output differente dallo stesso input (senza uso di srand() )

ciao... ho un dubbio sulla mia applicazione in C++..
Usando lo stesso input, sulla stessa macchina, senza ricompilare, il più delle volte ottengo degli output molto, molto (ma non del tutto) simili ma talvolta ottengo output "abbastanza" diversi.
Uso estensivamente l'algoritmo STL random_shuffle() ed a volte le chiamate a rand() ma non "resetto" mai il seme con srand(). Come può essere ???

Può dipendere da una libreria esterna che utilizzo per l'ottimizzazione matematica (GLPK) ???

Grazie a quanti sapranno indicarmi un punto dal quale partire...

un saluto,
sylvaticus
sylvaticus è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2008, 09:14   #2
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Non ho ben capito cosa vorresti.
Se li vuoi uguali tutte le volte (tipicamente per test), allora piazza uno srand fisso all'inizio (ES: srand(144)
Se invece li vuoi "diversi" tutte le volte piazzaci uno
srand ( time(NULL) );
O comunque uno srand diverso di volta in volta. Tipicamente si usano valori del timer, o numero di secondi a partire dalla tua data di nascita, o altro...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2008, 11:57   #3
sylvaticus
Junior Member
 
Iscritto dal: Nov 2007
Messaggi: 21
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Non ho ben capito cosa vorresti.
Se li vuoi uguali tutte le volte (tipicamente per test), allora piazza uno srand fisso all'inizio (ES: srand(144)
Se invece li vuoi "diversi" tutte le volte piazzaci uno
srand ( time(NULL) );
O comunque uno srand diverso di volta in volta. Tipicamente si usano valori del timer, o numero di secondi a partire dalla tua data di nascita, o altro...
no.. io li vorrei tutti uguali e non ho nessuna chiamata a srand().
Questo credo equivalga a fare una chiamata a srand "fisso"...

Il problema è che nonostante non abbia nessun srand() i risultati mi vengono diversi a parità di input :-(((
sylvaticus è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2008, 12:00   #4
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Be, prova a piazzare uno srand fisso, oppure prova a vedere se la liberia offre una chiamata analoga.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2008, 12:21   #5
sylvaticus
Junior Member
 
Iscritto dal: Nov 2007
Messaggi: 21
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Be, prova a piazzare uno srand fisso, oppure prova a vedere se la liberia offre una chiamata analoga.
..grazie.. ora sto provando con uno fisso (avevo provato inserendo srand(1) ogni volta che chiamavo rand(), ma era sbagliato..)
sylvaticus è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2008, 12:35   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da sylvaticus Guarda i messaggi
..grazie.. ora sto provando con uno fisso (avevo provato inserendo srand(1) ogni volta che chiamavo rand(), ma era sbagliato..)
Devi fare srand(1) solo una volta all'inizio del tuo programma.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2008, 18:28   #7
sylvaticus
Junior Member
 
Iscritto dal: Nov 2007
Messaggi: 21
fatto, ma inutile. Continua a dare risultati uguali alla virgola nel 20% dei casi e leggermente differenti nel restante 80%... :-(((
sylvaticus è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2008, 22:01   #8
wizard1993
Senior Member
 
L'Avatar di wizard1993
 
Iscritto dal: Apr 2006
Messaggi: 22462
Quote:
Originariamente inviato da sylvaticus Guarda i messaggi
fatto, ma inutile. Continua a dare risultati uguali alla virgola nel 20% dei casi e leggermente differenti nel restante 80%... :-(((
posta se puoi il tuo codice
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza
wizard1993 è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2008, 23:21   #9
sylvaticus
Junior Member
 
Iscritto dal: Nov 2007
Messaggi: 21
Quote:
Originariamente inviato da wizard1993 Guarda i messaggi
posta se puoi il tuo codice
Sono riuscito ad isolare il problema ( o almeno credo)..

Spesso utilizzo delle chiamate a rand() simili a quelle in questo loop:

Codice:
	double ddebug; 
	uint idebug=0;
	double debugmin = 0;
	double debugmax = 1000;
	for (uint i=0;i<10000;i++){
		ddebug += debugmin + ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) )*(debugmax-debugmin+1);
	}
	idebug = ddebug;
	std::cout << "idebug: "<<idebug<<std::endl;
La cosa strana è che utilizzo questo codice subito dopo il main() mi dà sempre lo stesso risultato, ma se lo metto, anche all'inizio, del mio "run()" a volte mi sgarra numero..
Utilizzo le Qt4 ed ho provato ad inserirlo nel run() dell'esempio del mandelbrot, e pure lì ogni tanto "sgarra".
E' un problema delle Qt ????
sylvaticus è offline   Rispondi citando il messaggio o parte di esso
Old 10-02-2008, 03:01   #10
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12113
Quote:
Originariamente inviato da sylvaticus Guarda i messaggi
Sono riuscito ad isolare il problema ( o almeno credo)..

Spesso utilizzo delle chiamate a rand() simili a quelle in questo loop:

Codice:
	double ddebug; 
	uint idebug=0;
	double debugmin = 0;
	double debugmax = 1000;
	for (uint i=0;i<10000;i++){
		ddebug += debugmin + ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) )*(debugmax-debugmin+1);
	}
	idebug = ddebug;
	std::cout << "idebug: "<<idebug<<std::endl;
La cosa strana è che utilizzo questo codice subito dopo il main() mi dà sempre lo stesso risultato, ma se lo metto, anche all'inizio, del mio "run()" a volte mi sgarra numero..
Utilizzo le Qt4 ed ho provato ad inserirlo nel run() dell'esempio del mandelbrot, e pure lì ogni tanto "sgarra".
E' un problema delle Qt ????
ehmm...
non ho idea..
ma solitamente gli EDT (Ebent Diapstcher Thread) delle librerie grafiche non sono mai un buon posto dove metere del codice che non ha niente a che fare con l'interfaccia grafica
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 10-02-2008, 11:41   #11
sylvaticus
Junior Member
 
Iscritto dal: Nov 2007
Messaggi: 21
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
ehmm...
non ho idea..
ma solitamente gli EDT (Ebent Diapstcher Thread) delle librerie grafiche non sono mai un buon posto dove metere del codice che non ha niente a che fare con l'interfaccia grafica
Accidenti.. in effetti riscrivendo il main() in modo da "saltare" la GUI mi funzia..
Vuol dire che c'è qualcosa nella GUI che gli da fastidio.. ma qual'è allora un approccio corretto in un modello dove la GUI serve solo per "visualizzare" lo stato di un modello e farlo partire con i soliti start/pause/stop ???
Ero riuscito a fare due thread separati, uno per la GUI ed uno per il modello, ma vedo che condividendo l'area di memoria se c'è una qualche cappella nella GUI questa può propagarsi nel modello...
sylvaticus è offline   Rispondi citando il messaggio o parte di esso
Old 10-02-2008, 11:49   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
La prima soluzione che mi viene in mente è: usa un generatore di numeri casuali indipendente da quello della libreria standard. Almeno te lo gestisci come ti pare.
Ne trovi tanti online.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato WoW Forever provato: il MMORPG che la community ...
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita TCL P80 Ultra: con un display AMOLED opaco &egra...
NordVPN anticipa il Black Friday: sconti...
HPE Spaceborne Computer-4: calcolo ad al...
500 chilometri in soli 5 minuti: la rica...
CATL e BAIC puntano a un milione di auto...
La Svezia blocca ChatGPT e Claude sui co...
La NASA ha tenuto una conferenza sulle f...
Galaxy S27 Ultra, spunta la batteria in ...
Google Maps porta l'intelligenza artific...
Una foto troppo perfetta può costare car...
Caldo in Europa, oltre 50.000 morti stim...
Il low cost spopola su Amazon: 7 offerte...
HP Envy 6120e a 49,90€ su Amazon: stampa...
Dove finiscono le ore che l’IA fa rispar...
Radiatori a olio in offerta su Amazon: M...
Tlc, l'occupazione crolla al minimo stor...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:35.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v