Náhodné čísla sa nám v programoch hodia napríklad pri generovaní náhodných udalostí v hrách (spawn na náhodnom mieste, náhodný item ako odmena, náhodné rozlosovanie tímov) ale aj pri generovaní hesiel alebo pri losovaní súperov v turnajoch. V našom Python-ovom programe môžeme generovať náhodné čísla použitím knižnice random a jej funkcie random.randint(1,10), ktorá vygeneruje náhodné celé číslo v zadanom intervale, v tomto prípade napríklad od 1 po 10 (vrátane). Vygenerovanú hodnotu si môžeme uložiť do premennej a ďalej s ňou pracovať. Nezabudni na začiatoku svojho programu pridať knižnicu random pomocou riadku import random, potom môžeš používať príkaz random.randint(2,20) koľko len potrebuješ (samozrejme so správne nastavenými čislami od-do).
Ukážka použitia knižnice random a funkcie random.randint() na simuláciu hodu štandardnou hracou kockov.
import random
cisloNaKocke = random.randint(1, 6)
print ("Na kocke padla ", cisloNaKocke)
Baliček random toho ponúka viac ako len generovanie náhodných celých čísel. Z ponuky sa vám môže hodiť ešte nasledovné:
import random
# do premennej "a" tieto prikazy priradia nasledovne...
# náhodné číslo z intervalu [1, 10]
a = random.randint(1, 10)
# náhodnú hodnotu zo zoznamu (hodí sa napríklad pre výber farby)
a = random.choice(["red", "green", "blue"])
# náhodné desatinné číslo z intervalu [0, 1]
a = random.random()
Špeciále sa môže hodiť generátor náhodnej farby, taký, čo vyberie ľubovoľnú farbu z celého modelu RGB...
# generovanie úplne náhodnej farby pre grafiku
# farbu pre canvas.create_rectangle môžeme uviesť v hexadecimálnom zápise
# ako #RRGGBB, napríklad #FF0000 je červená
randomFillColor = f"#{random.randint(0,256**3-1):0{6}X}"
# potom premennú použijeme ako hodnotu parametra fill...
canvas.create_rectangle(50, 70, 220, 150, fill=randomFillColor)
Takéto generovanie náhodnej farby určite nemusíte vedieť napísať z hlavy, pre fajnšmekrov a budúcich seminarostov uvádzame vysvetlenie toho, čo to vlastne robí, teda, čo robí riadok
randomFillColor = f"#{random.randint(0,256**3-1):0{6}X}"
problémom je formát zápisu farby, tkinter, špeciálne funkcia create_rectangle berie parameter 'fill' ako text, ktorý začína hashagom a potom má 6 hexadecimálnych cifier napríklad #01ABF4 alebo #FFC3A3. Dvojice cifier postupne vyjadrujú koľko je vo výslednej farbe červenej, zelenej, modrej, podľa modelu RGB, pre každú zložku je to teda nastavené v rozmedzí 0-255 (1 bajt).
random.randint(0,256**3-1) - generuje číslo v desiatkovej sústave, namiesto toho, aby sme každú zložku generovali zvlášť (R, G a B ako číslo od 0 po 255, každé v jednom bajte) pozeráme sa na túto hodnotu ako na veľké trojbajtové číslo, to môže mať hodnotu 0 až 256**3-1 (alebo v hexadecimálnej sústave od 0 po FFFFFF).
za dvojbodkou je uvedený formát čísla...
X - znamená, že to bude konvertované na hexadecimálny zápis s veľkými písmenami
0{6} - to je tzv. "padding", teda číslo sa zľava vyplní nulami na celkovú dĺžku 6 cifier, ak napríklad random.randint vygeneruje desiatkové číslo 10, po konvertovaní na hexadecimálny zápis by to bolo len 'A', ale my potrebujeme '00000A'
Prehľad ďalších funkcií, ktoré poskytuje balíček random nájdete v oficálnej dokumentácii Pythonu alebo (a možno o čosi prehľadnejšie) na stránkach W3 schools