Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe
Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe
La flessibilità di configurazione è il punto di forza di questo 2-in-1, che ripropone in un form factor alternativo tutta la tipica qualità dei prodotti Lenovo della famiglia ThinkPad. Qualità costruttiva ai vertici, ottima dotazione hardware ma costo che si presenta molto elevato.
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Mentre Ubisoft vorrebbe chiedere agli utenti, all'occorrenza, di distruggere perfino le copie fisiche dei propri giochi, il movimento Stop Killing Games si sta battendo per preservare quella che l'Unione Europea ha già riconosciuto come una forma d'arte. Abbiamo avuto modo di parlare con Daniel Ondruska, portavoce dell'Iniziativa Europa volta a preservare la conservazione dei videogiochi
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Abbiamo provato il nuovo Galaxy S25 Edge, uno smartphone unico per il suo spessore di soli 5,8 mm e un peso super piuma. Parliamo di un device che ha pro e contro, ma sicuramente si differenzia dalla massa per la sua portabilità, ma non senza qualche compromesso. Ecco la nostra prova completa.
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


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...
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione Samsung Galaxy S25 Edge: il top di gamma ultraso...
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto HP Elitebook Ultra G1i 14 è il notebook c...
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Avatar: Fuoco e Cenere ha una data di us...
9 robot per le pulizie, sconti anomali d...
'Un clone spudorato!': Sony porta Tencen...
Boom Ray-Ban Meta: vendite triplicate, o...
3 tablet a prezzo shock, 11" Full H...
PayPal abilita i pagamenti in oltre 100 ...
STMicroelectronics non chiude in Italia…...
Super portatile Lenovo con Intel Core i5...
Una friggitrice ad aria per 49€, anche c...
La Cina ha sviluppato una macchina in gr...
Lanciati cinque nuovi satelliti cinesi G...
Meta avrebbe scaricato illegalmente migl...
QNAP annuncia la funzionalità di ...
Fino a 96 core per chip: la nuova CPU se...
Robot che crescono mangiando i loro simi...
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: 08:21.


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