Funkcia Rnd
Funkcia Rnd vrácia náhodné desatinné číslo v intervále od 0 do 1. Poďme si pozrieť prvý príklad.
1. príklad: Skúšame, či fakt funkcia Rnd vrácia desatinné číslo
Sub Macro REM začiatok procedúry Dim cislo As Variant REM deklarácia premennej cislo = Rnd REM získanie náhodného čísla MsgBox cislo REM výpis na obrazovku End Sub REM koniec procedúry
Výsledné náhodné desatinné číslo
Takže sme zistili, že vrácia desatinné číslo. Ok, skúsme ho zaokruhliť na celé číslo. Ukážeme si dve jednoduché spôsoby, ako to urobíme.
2. príklad: Prvý spôsob je cez deklaráciu premennej
Sub Macro REM začiatok procedúry Dim cislo As Integer REM deklarácia premennej cislo = Rnd REM získanie náhodného čísla MsgBox cislo REM výpis na obrazovku End Sub REM koniec procedúry
3. príklad: Duhý spôsob cez funkciu CInt
Sub Macro REM začiatok procedúry Dim cislo As Variant REM deklarácia premennej cislo = CInt(Rnd) REM získanie náhodného čísla MsgBox cislo REM výpis na obrazovku End Sub REM koniec procedúry
Len malokedy nám stačí taký malý intervál na tvorbu náhodných čísel. Veď aj pri hode kocky môže nastať šesť rôzných udalostí. Na vytvorenie hociakého interválu nám slúži jednoduchy vzorec: (maximálne číslo interválu – minimálne číslo interválu) * Rnd + minimálne číslo interválu
Napríklad chcem intervál od 1 do 10. Podľa vzorca nám to vychádza takto: (10 – 1) * Rnd + 1, kde Rnd je náhodné desatinné číslo.
Poďme uviesť vzorec do praxe.
4. príklad: Tvoríme si vlastný interval
Sub Macro REM začiatok procedúry Dim cislo As Variant REM deklarácia premennej cislo = CInt((5-1)*Rnd+1) REM získanie náhodného čísla MsgBox cislo REM výpis na obrazovku End Sub REM koniec procedúry
Výsledné náhodné číslo v intervale od 1 do 5
5. príklad: Uhádni na aké číslo myslím!
Sub Macro REM začiatok procedúry Dim vstup As String REM deklarácie premenných Dim cislo As Integer vstup = InputBox("Zadaj na aké číslo myslím v intervale 1-10?") REM vstup od užívateľa If IsNull(vstup) Then Exit Sub REM kontrolujeme či bolo vôbec niečo zadané If Len(Trim(vstup)) = 0 Then Exit Sub cislo = CInt(Trim(vstup)) nahodneCislo = CInt((10-1)*Rnd+1) REM získanie náhodného čísla If cislo = nahodneCislo Then REM ak sa zhoduje užívateľov tip s náhodne vygenerovaným, program mu to oznámi MsgBox "Super uhádol si!" Else MsgBox "Smola, myslel som na číslo: " & nahodneCislo & "! Tak snáď nabudúce sa ti bude lepšie dariť :)" End If REM koniec podmienky End Sub REM koniec procedúry
6. príklad: Uhádni moju obľúbenú farbu
Sub Macro REM začiatok procedúry Dim vstup As String REM deklarácie premenných Dim cislo As Integer Dim farba As String vstup = InputBox("Zadaj farbu ako číslo, ktorú mám rád! Poradím ti, máš na výber len modrú (1), zelenú (2) a červenú (3)!") REM vstup od užívateľa If IsNull(vstup) Then Exit Sub REM kontrolujeme či bolo vôbec niečo zadané If Len(Trim(vstup)) = 0 Then Exit Sub If CInt(Trim(vstup)) <= 0 Then Exit Sub REM chceme len čísla od 1 do 3 If CInt(Trim(vstup)) >= 4 Then Exit Sub cislo = CInt(Trim(vstup)) nahodneCislo = CInt((3-1)*Rnd+1) REM získanie náhodného čísla If nahodneCislo = 1 Then farba = "modrá" REM pri výpise to budeme potrebovať If nahodneCislo = 2 Then farba = "zelená" If nahodneCislo = 3 Then farba = "červená" If cislo = nahodneCislo Then REM ak sa zhoduje užívateľov tip s náhodne vygenerovaným, program mu to oznámi MsgBox "Super uhádol si!" Else MsgBox "Smola, moja obľúbená farba je: " & farba & "! Tak snáď nabudúce sa ti bude lepšie dariť :)" End If REM koniec podmienky End Sub REM koniec procedúry
Nabudúce si ukážeme sofistikovanejšie príklady s funkciou Rnd.