Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
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
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, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet

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
Messaggi: 5206
cionci, ottima idea!
Così non ci si deve preoccupare di impostare il seed esplicitamente.
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
SpaceX mostra nuove immagini del lancio ...
Cina: CAS Space e Guangzhou Laboratory e...
Nikon Comedy Wildlife Awards 2026: le fo...
Samsung Galaxy A57 e A37 costano di più ...
Windows 11 26H2 taglia il consumo di RAM...
KINGPIN è tornato! Il re dell'ove...
CPU usata, ban ereditato: il caso del Ry...
Spunta un engineering sample di Ryzen 9 ...
iPhone 18 Pro, alcuni utenti segnalano s...
Android Auto: Gemini ascolta la domanda ...
OpenAI avvisa oltre 100 organizzazioni p...
Dall'AI alla SI: il rebranding di Trump ...
0patch offrirà supporto esteso pe...
Sudo sembra un iPod, ma nasconde una car...
Meta, OpenAI e Google rifanno OpenClaw: ...
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: 05:12.


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