Linux E X P R E S

Facebook

Programovanie v jazyku C++: Generátor pseudonáhodných čísel (2)

C++

Pokračujeme druhým dielom o generátore pseudonáhodných čísel. Diel bude zameraný na tvorbu programov, kde si precvičite generátor pseudonáhodných čísel. 


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 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
}

Výsledok programu Výsledok 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.



Diskuze (1) Nahoru