# https://docs.python.org/3/library/random.html
# Nepoužívejte pro šifrování!
import random
# https://docs.python.org/3/library/itertools.html
import itertools
# Generuje náhodné celé číslo 1 <= x <= 10:
x = random.randint(1, 10)
print(x)
# Alternativa, pokud máte rádi pythoní range(...):
x = random.randrange(1, 11)
print(x)
# Generuje náhodný prvek dané neprázdné posloupnosti:
drink = random.choice([
"světlé pivo",
"tmavé pivo",
"slivovice",
"zelený čaj",
"černý čaj",
"bílý čaj",
"mléko",
])
print(drink)
# Výsledek 'B' je třikrát pravděpodobnější než 'A':
print(random.choice(['A', 'B', 'B', 'B']))
# Vrátí seznam k náhodných prvků z dané sekvence (mohou se opakovat):
print(random.choices(['A', 'B', 'C'], k=5))
# Také můžeme určit váhy jednotlivých prvků:
print(random.choices(['A', 'B', 'C'], weights=[1, 1, 4], k=5))
# Výběr bez opakování:
print(random.sample(['w', 'x', 'y', 'z'], k=2))
print(random.sample(['w', 'x', 'y', 'x'], k=2)) # dvě různá 'x'
# Náhodná permutace:
my_list = ['a', 'b', 'c', 'd']
print(random.sample(my_list, k=len(my_list)))
# Destruktivní náhodná permutace:
random.shuffle(my_list)
print(my_list)
# Inicializace počátecního stavu generátoru
random.seed(42)
# Nebo můžeme chtít pokaždé jiný počáteční stav
random.seed()
# Generování všech možností (vrací iterable):
print(list(itertools.permutations([1, 2, 3])))
print(list(itertools.combinations('ABCD', 2)))
print(list(itertools.combinations_with_replacement('ABCD', 2)))
# Kombinační čísla nejsou v základních knihonách, ale ve scipy.
# import scipy.special
# scipy.special.comb(n, k, exact=True) # vrátí n nad k