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.

Potrebujete v makre vylosovať náhodné číslo a neviete ako nato? Tento diel vám priblíži funkciu Rnd.














