Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-07-2007, 15:59   #1
The_ouroboros
Senior Member
 
L'Avatar di The_ouroboros
 
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
[C++] Classe che genera numeri a caso

E da un po che non programmavo e oggi ho ripreso...

Codice:
#include <cstdlib>
#include <ctime>

class Gen
{
private:
    int  *list;
    int  range;
    int  seed;
    int  gen_casual();
    void SetRange(int v=100){ range=v;  };
    int  GetRange(){ return range;  };
public:
    Gen(int c, int s=time(NULL));
    ~Gen();
    int *GetList(int n=50);
};

Gen::Gen(int c, int s)
{
    seed = s;
    SetRange(c);
    srand(seed);
}

Gen::~Gen()
{
    // TODO
    delete list;
}
int Gen::gen_casual()
{
    return (int)( rand() % GetRange() + 1 );
}

int *Gen::GetList(int n)
{
    list =  new int[n];
    for(int i=0; i < n; i++)
    {
        list[i] = gen_casual();
    }
    return list;
}
Va bene come progettazione di classe o è troppo incasinata???
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go

Ultima modifica di The_ouroboros : 12-07-2007 alle 16:06.
The_ouroboros è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2007, 16:18   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Tieni presente che la impostazione del 'seed' con srand è una cosa "globale", non ha quindi senso farla nel costruttore della classe.

Io, come base, farei così:
Codice:
#include <cstdlib>
#include <ctime>

class Rnd
{
private:
    int min;
    int max;
public:
    Rnd (int min, int max);
    int next ();

    static void seed ();
    static void seed (unsigned int seed);
};

Rnd::Rnd (int min, int max)
{
    this->min = min;
    this->max = max;
}

int Rnd::next ()
{
    double d = rand () / (RAND_MAX+1.0);
    return ((int) (d * (max-min+1))) + min;
}

void Rnd::seed ()
{
    srand ((unsigned int) time (NULL));
}

void Rnd::seed (unsigned int seed)
{
    srand (seed);
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)

Ultima modifica di andbin : 12-07-2007 alle 16:20.
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2007, 17:37   #3
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
Io ci metterei anche qualcosa di questo tipo:
Codice:
#include <cstdlib>
#include <ctime>

class Rnd
{
private:
    int min;
    int max;

    static boolean seeded;

public:
    Rnd (int min, int max);
    int next ();

    static void seed ();
    static void seed (unsigned int seed);
};

Rnd::Rnd (int min, int max)
{
    this->min = min;
    this->max = max;
    if(!Rnd::seeded)
    {        
        Rnd::seed();
    }
}

int Rnd::next ()
{
    double d = rand () / (RAND_MAX+1.0);
    return ((int) (d * (max-min+1))) + min;
}

void Rnd::seed ()
{
    seed((unsigned int) time (NULL));
}

void Rnd::seed (unsigned int seed)
{
    srand (seed);
    Rnd::seeded = true;
}

boolean Rnd::seeded = false;

Ultima modifica di cionci : 12-07-2007 alle 18:08.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2007, 19:28   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
cionci, ottima idea!
Così non ci si deve preoccupare di impostare il seed esplicitamente.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Trapela in rete la roadmap dei nuovi gio...
In Germania la prima centrale solare gal...
Iliad lancia TOP 250 PLUS e TOP 300 PLUS...
UE: nuovi standard per i caricabatterie,...
Fine supporto Windows 10: breve guida pr...
Cyber Arena Tour: WINDTRE BUSINESS porta...
Addio Microsoft Word: la Cina sceglie WP...
Nano Banana si espande: l’AI di Google p...
Che fare con i Tesla Cybertruck invendut...
Simucube 3 Sport, Pro e Ultimate ufficia...
Facebook rilancia le offerte di lavoro: ...
Hisense PT1: il cinema in casa con la po...
Pixel 10: come risolvere (forse) i crash...
Plenitude lancia la sua Fibra ottica: fi...
Apple TV+ elimina il 'plus' dal nome: or...
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: 11:50.


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