Thuis
Contacten

    Hoofdpagina


Programmeren in C++ voor beginners

Dovnload 5.04 Mb.

Programmeren in C++ voor beginners



Pagina40/49
Datum25.10.2017
Grootte5.04 Mb.

Dovnload 5.04 Mb.
1   ...   36   37   38   39   40   41   42   43   ...   49

Random numbers

De functie std::rand en std::srand worden gebruikt om pseudo-willekeurige ('pseudo-random') getallen te genereren. Pseudo-willekeurig, want een computer kan geen 'echte' willekeurige getallen produceren (hoewel hier tegenwoordig quantum-chips voor zijn die dit wel kunnen!). Inplaats daarvan produceerd de computer een serie opeenvolgende getallen. De reeks opeenvolgende getallen is zo, dat als je een getal weet, je niet het volgende getal kunt voorspellen.


Maar deze reeks getallen zal altijd hetzelfde zijn, voor dezelfde 'seed'. De seed ('zaadje') is een soort startpunt van de random number sequentie. De seed zet je met std::srand.
Onderstaande code zal geen assertfouten opleveren:
const int n = 1000; //Aantal testen

const int seed = 12345; //Of welke waarde dan ook
std::vector v;

v.resize(n);


{ //Initialiseer v met 'willekeurige' getallen

std::srand(seed);



for (int i=0; i!=n; ++i)

{

v[i] = std::rand();



}

}

{ //Lees of 'willekeurige' getallen gelijk zijn aan v



std::srand(seed);

for (int i=0; i!=n; ++i)

{

assert(v[i] == std::rand());



}

}
Onderstaande code bevat een denk-fout:


//Zet de seed met een random number

std::srand(std::rand()); //Denkfout!


Om de seed te kunnen zetten wordt deze vaak gezet met behulp van de systeemtijd:
std::srand(std::clock());
Zolang een programma niet vaker dan eens per seconde wordt gestart, heeft deze een unieke seed.

    1. Een eigen data type

Soms zouden we graag enkele samenhangende variabelen bundelen. Dit kan met behulp van een struct.


struct Coordinaat

{

int mX;



int mY;

};
Bovenstaande is een (klasse)declaratie van een data type genaamd 'Coordinaat' die uit twee ints bestaat. Merk de puntkomma op bij het sluiten van de declaratie.


Vanaf deze declaratie kunnen we werken met dit data type alsof het een String zou zijn:
Coordinaat c;

c.mX = 10;



c.mY = c.mY;
Is het data type goed gedeclareerd, dan zal Class Browsing ons helpen als we de punt in toetsen.
Ook is het mogelijk een std::vector te maken.




Wees duidelijk in wat voor struct je wilt maken. Als je er geen zinnige naam aan kunt geven, is dit vaak een zwakte in het ontwerp.
1   ...   36   37   38   39   40   41   42   43   ...   49

  • Een eigen data type

  • Dovnload 5.04 Mb.