Tvorba zaujímavých programov
Zatiaľ sme si z minulého diela ukázali nejaké to základne fungovanie generátora pseudonáhodných čísel. Teraz si ukážeme dva príklady na generátor pseudonáhodných čísel.
Pri prvom programe využijeme príklad už známy z minulého dielu, len mierne modifikovaný.
1. príklad:
#include <iostream> // hlavičkové súbory
#include <cstdlib>
#include <ctime>
using namespace std; // priestor mien
int main() // hlavná funkcia main
{
cout << "Postupnost 5 nahodnych cisel: \n";
srand(time(0)); // inicializácia generátora pseudonáhodných čísel
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
int pseudocislo = rand() % 100; // pseudonáhodne číslo
cout << pseudocislo << " ";
}
cout << "\n";
}
return 0; // koniec programu
}
Výsledok programu:
Postupnost 5 nahodnych cisel: 49 12 13 25 82 34 17 25 55 16 74 70 22 43 70 30 18 31 11 23 76 60 98 17 32
Rozbor programu:
Ak chceme získať len nejaké čísla od nejakého interválu, tak najefektívnejšie ich získame jednoduchým doplnením funkcie rand na rand() % 100. Čo sa udeje pri tomto zápise? Funkcia rand nájde nejaké číslo od 0 do RAND_MAX a toto číslo vydelíme 100 a získame nejaký zvyšok. Ak napríklad vydelíme číslo 125, tak 125 / 100 = 1 so zvyškom 25. Dostaneme pri takomto definovaní náhodné číslo 25. Celkový interval je teda od 0 do 99 pri rand() % 100. Ak chceme interval od 1 do 100, tak napíšeme rand() % 100 + 1. Takto môžete získať ľubovoľný želaný interval.
2. príklad: Hádžeme kockou až trikrát!
#include <iostream> // hlavickové súbory #include <cstdlib> #include <ctime> using namespace std; // priestor mien int main() // hlavná funkcia main { srand(time(0)); // deklaracia generatora pseudocisel cout << "Tri hody kockou!\n"; for (int i = 0; i < 3; i++) { cout << "+---+\n"; int nahodneCislo = rand() % 6 + 1; if (nahodneCislo == 1) { cout << "| |\n"; // generujeme hody kociek cout << "| * |\n"; cout << "| |\n"; } if (nahodneCislo == 2) { cout << "|* |\n"; cout << "| |\n"; cout << "| *|\n"; } if (nahodneCislo == 3) { cout << "| *|\n"; cout << "| * |\n"; cout << "|* |\n"; } if (nahodneCislo == 4) { cout << "|* *|\n"; cout << "| |\n"; cout << "|* *|\n"; } if (nahodneCislo == 5) { cout << "|* *|\n"; cout << "| * |\n"; cout << "|* *|\n"; } if (nahodneCislo == 6) { cout << "|***|\n"; cout << "| |\n"; cout << "|***|\n"; } if (nahodneCislo < 1 || nahodneCislo > 6) // pre pripad co ak by sa nieco pokazilo { cout << "Ups, nejaka chybicka sa vyskytla, koncim!"; return 0; } cout << "+---+\n"; } return 0; // koniec programu }
Rozbor programu:
Skúste spustiť program, získate 3 hody kocky. Interval pseudonáhodných čísel sme zvolili od 1 do 6. V našom definovanom prípade nehľadáme zvyšky pri delení 100, ale 6. Takto intuitívne si môžete definovať jednotlivé intervaly.
To by bolo všetko ku generátoru pseudonáhodných čísel. V budúcich dielach si ukážeme ďalšie knižnice so zaujímavými funkciami, napríklad pre prácu zo znakmi alebo prácu s reťazcami.