Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
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
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-02-2008, 09: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, 10: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, 12: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, 13: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, 13: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, 13: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, 19: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, 23: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 10-02-2008, 00: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, 04: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, 12: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, 12: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


Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
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 ...
Oracle e Astrazeneca insieme per lo svil...
Anthropic e la quotazione: cosa emerge d...
Condanna milionaria per il sessantottenn...
HONOR Robot Phone a Movieland: abbiamo g...
Google Messaggi introduce la Protezione ...
Vera Rubin, NVIDIA aggiorna le specifich...
Google Health 5.11 amplia il rilevamento...
Legacy Games chiude dopo quasi 30 anni: ...
iPhone Duo avvia le automazioni quando l...
Tomb Raider: Legacy of Atlantis, rivelat...
Instagram arriva su Apple TV con un'app ...
Meta lancia un'offerta azionaria da 35 m...
L'Italia sfida i big dei semiconduttori:...
Chernobyl fa parlare ancora di sé: il bi...
Kioxia Exceria G3 4TB, il PCIe 5.0 che p...
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: 20:01.


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