Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
AMD ha aggiornato l'offerta di CPU HEDT con i Ryzen Threadripper 9000 basati su architettura Zen 5. In questo articolo vediamo come si comportano i modelli con 64 e 32 core 9980X e 9970X. Venduti allo stesso prezzo dei predecessori e compatibili con il medesimo socket, le nuove proposte si candidano a essere ottimi compagni per chi è in cerca di potenza dei calcolo e tante linee PCI Express per workstation grafiche e destinate all'AI.
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale
Forte di soluzioni tecniche specifiche, il notebook Acer TravelMate P4 14 abbina dimensioni compatte e buona robustezza per rispondere alle necessità specifiche degli utenti aziendali. La piattaforma AMD Ryzen 7 Pro assicura prestazioni elevate con i tipici ambiti di produttività personale e sul lavoro, mantenendo un'elevata autonomia.
Hisense M2 Pro: dove lo metti, sta. Mini proiettore laser 4K per il cinema ovunque
Hisense M2 Pro: dove lo metti, sta. Mini proiettore laser 4K per il cinema ovunque
Dal salotto al giardino, il nuovo proiettore laser di Hisense promette esperienze cinematografiche in qualsiasi contesto: qualità d’immagine, semplicità d’uso, versatilità e prezzo competitivo il suo poker d'assi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-06-2006, 14:19   #21
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da trallallero
vabbé non é quello che impedisce la ridefinizione di RAND_MAX. Pensavo intendessi qualcos'altro

Ci ho provato (#define RAND_MAX 10) mi da giustamente un warning sulla define
ma poi non me la caga proprio
Non mi considera proprio
A parte il fatto che se vuoi ridefinire una macro già esistente, devi prima fare un #undef ...

Comunque il problema non è quello!
Sono andato adesso a vedere il sorgente della rand() nel VC++. Eccolo:
Codice:
int __cdecl rand (
        void
        )
{
#ifdef _MT

        _ptiddata ptd = _getptd();

        return( ((ptd->_holdrand = ptd->_holdrand * 214013L
            + 2531011L) >> 16) & 0x7fff );

#else  /* _MT */
        return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
#endif  /* _MT */
}
Vedi che il valore di ritorno viene sempre troncato con un & 0x7fff??? Vuol dire che il comportamento di questa rand() è quello di ritornare un valore tra 0 e 32767.

E nell'include stdlib.h fornito con il VC++ c'è:
#define RAND_MAX 0x7fff

Se anche tu ridefinissi RAND_MAX, la funzione rand() continua a funzionare secondo il modo con cui è stata progettata e compilata!!!!!!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 14:34   #22
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da andbin
A parte il fatto che se vuoi ridefinire una macro già esistente, devi prima fare un #undef ...
vabbé quello é solo per evitare il warning

Quote:
Originariamente inviato da andbin
Comunque il problema non è quello!
Sono andato adesso a vedere il sorgente della rand() nel VC++. Eccolo:
Codice:
int __cdecl rand (
        void
        )
{
#ifdef _MT

        _ptiddata ptd = _getptd();

        return( ((ptd->_holdrand = ptd->_holdrand * 214013L
            + 2531011L) >> 16) & 0x7fff );

#else  /* _MT */
        return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
#endif  /* _MT */
}
Vedi che il valore di ritorno viene sempre troncato con un & 0x7fff??? Vuol dire che il comportamento di questa rand() è quello di ritornare un valore tra 0 e 32767.

E nell'include stdlib.h fornito con il VC++ c'è:
#define RAND_MAX 0x7fff

Se anche tu ridefinissi RAND_MAX, la funzione rand() continua a funzionare secondo il modo con cui è stata progettata e compilata!!!!!!
ma bene! che bello vedere le costanti nel codice
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2006, 10:04   #23
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Se vi serve un generatore di numeri casuali che rispetti un minimo di requisiti di casualità andatevi a leggere i Numerical Recipes, senza perdere troppo tempo su rand().
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2006, 17:52   #24
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
ho un problema... il compilatore dice che null non è definito... questa è la funzione
Codice:
int randgen()
{
srand(time(null));
return rand()%4+1;
}
help

Ultima modifica di AngeL) : 30-06-2006 alle 18:00.
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2006, 18:05   #25
Energy++
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1059
Semplice ti da errore perche lo devi scrivere tutto maiuscolo!!

NULL

ciao ciao
Energy++ è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2006, 18:06   #26
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
ehm.. scusa
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2006, 18:25   #27
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
ho scritto una funzione che scrive 100 volte il risultato di randgen e mi esce lo stesso numero... dove ho sbagliato?
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2006, 18:56   #28
Energy++
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1059
Quote:
Originariamente inviato da AngeL)
ho scritto una funzione che scrive 100 volte il risultato di randgen e mi esce lo stesso numero... dove ho sbagliato?
così dovrebbe andare:

int randgen()
{
return rand()%4+1;
}

main(){
srand(time(NULL));
for(int i=0; i<101; i++)
cout <<randgen()<<endl;
system("pause");
}

ciao ciao
Energy++ è offline   Rispondi citando il messaggio o parte di esso
Old 01-07-2006, 10:20   #29
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16211
Quote:
Originariamente inviato da AngeL)
il compilatore dice che null non è definito
null non è definito. NULL, invece, sì --- e il C è case-sensitive.
Quote:
Codice:
return rand()%4+1;

Codice:
return (rand()/(RAND_MAX+1.0))*4+1;
qui
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 01-07-2006, 10:23   #30
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16211
Quote:
Originariamente inviato da AngeL)
ho scritto una funzione che scrive 100 volte il risultato di randgen e mi esce lo stesso numero... dove ho sbagliato?
Se non viene specificato altrimenti, il generatore pseudorandom viene sempre inizializzato col valore di default, quindi a ogni nuova esecuzione la sequenza è sempre la stessa.
Il problema si risolve inizializzandolo con un valore diverso a ogni esecuzione: il modo classico srand(time(NULL)), in base all'ora di sistema, ma ho visto fare anche srand(getpid()), in base al PID del processo in corso.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 01-07-2006, 10:50   #31
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
Quote:
Originariamente inviato da Energy++
così dovrebbe andare:

int randgen()
{
return rand()%4+1;
}

main(){
srand(time(NULL));
for(int i=0; i<101; i++)
cout <<randgen()<<endl;
system("pause");
}

ciao ciao
il mio codice è uguale.

Quote:
Originariamente inviato da ziosilvio
non
Codice:
return rand()%4+1
ma
Codice:
return (rand()/(RAND_MAX+1.0))*4+1;
che cambia?

edit: ho fatto cosi
Codice:
#include <iostream>
#include <time.h>
using namespace std;

int randgen();

int main()
{
int i;
for(i=0;i<10;i++)
{
cout << randgen() << endl;
}
}

int randgen()
{
srand(time(NULL));
return (rand()/(RAND_MAX+1.0))*4+1;
}
ma restituisce sempre lo stesso numero :\

Ultima modifica di AngeL) : 01-07-2006 alle 10:53.
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 01-07-2006, 11:01   #32
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da AngeL)
ma restituisce sempre lo stesso numero :\
srand la devi chiamare 1 volta sola all'inizio del programma.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 01-07-2006, 11:18   #33
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
grazie
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 01-07-2006, 19:05   #34
Energy++
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1059
Quote:
Originariamente inviato da andbin
srand la devi chiamare 1 volta sola all'inizio del programma.

si infatti
Energy++ è offline   Rispondi citando il messaggio o parte di esso
Old 01-07-2006, 23:07   #35
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16211
Quote:
Originariamente inviato da AngeL)
che cambia?
Che usi tutte le cifre usate da rand, anziché solo quelle meno significative.
In questo modo, la qualità del generatore che ottieni, è confrontabile con quella di rand; nell'altro modo, rischi di ottenere un generatore anche molto peggiore.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello Ryzen Threadripper 9980X e 9970X alla prova: AMD...
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale Acer TravelMate P4 14: tanta sostanza per l'uten...
Hisense M2 Pro: dove lo metti, sta. Mini proiettore laser 4K per il cinema ovunque Hisense M2 Pro: dove lo metti, sta. Mini proiett...
Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il c...
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart Intervista a Stop Killing Games: distruggere vid...
Xbox: dal prossimo mese verifica dell'id...
Corsair AI Workstation 300: poco pi&ugra...
Addio a Elio Marioli, un pioniere della ...
L'IA sta già diminuendo il potere...
Guida autonoma? Gli ADAS falliscono e in...
Skechers lancia le scarpe per bambini co...
Revolut e Audi F1: un’alleanza rivoluzio...
Gestione attività di Windows 11 d...
Amazon lancia il nuovo videocitofono Bli...
Robot aspirapolvere al top: i nuovi DEEB...
Opera vs Microsoft: la guerra dei browse...
Router e ripetitori FRITZ! in offerta su...
Spotify vola a quota 700 milioni di uten...
Microsoft pronta ad abbandonare il launc...
Windows 11, arriva una feature multimoni...
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:53.


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