# Numeros Aleatorios Ejemplos: - [Módulo Random](https://gitea.kickto.net/devfzn/Apuntes_Python/src/branch/master/02_conceptos/12_random_numbers#generar-n%C3%BAmeros-seudo-aleatorios) - [Módulo Secret](https://gitea.kickto.net/devfzn/Apuntes_Python/src/branch/master/02_conceptos/12_random_numbers#secrets) - [Módulo NumPy](https://gitea.kickto.net/devfzn/Apuntes_Python/src/branch/master/02_conceptos/12_random_numbers#numpy) ## Generar Números (seudo)Aleatorios ```python import random # Genera números aleatorios 'float' desde 0 a 1 a = random.random() print(a) # ej. 0.020823109453158017 # Número (float) aleatorio con rango (inicio, final) a = random.uniform(1, 10) print(a) # ej. 4.19839993456984 # Número (int) aleatorio con rango incluido (inicio, final) a = random.randint(1, 10) print(a) # ej. 10 # Número (int) aleatorio con rango no incluido (inicio, final) a = random.randrange(1, 10) print(a) # ej. 8 # Número (estadistico) aleatorio (nu, sigma) a = random.normalvariate(0, 1) print(a) # ej. -0.8380968602149392 # Objeto aleatorio de una lista lista = list("ABCDEFGHI") a = random.choice(lista) print(a) # ej. E # Objetos únicos aleatorios de una lista lista = list("ABCDEFGHI") a = random.sample(lista, 3) print(a) # ej. ['D', 'I', 'F'] # Objetos no únicos aleatorios de una lista lista = list("ABCDEFGHI") a = random.choices(lista, k=3) print(a) # ej. ['G', 'E', 'E'] # Reorden aleatorio de elementos lista = list("ABCDEFGHI") random.shuffle(lista) print(lista) # ej. ['C', 'D', 'I', 'F', 'B', 'H', 'G', 'A', 'E'] # Reproducir aletoriedad random.seed(1) print(random.random()) # 0.13436424411240122 print(random.randint(1,10)) # 2 random.seed(2) print(random.random()) # 0.9560342718892494 print(random.randint(1,10)) # 1 random.seed(1) print(random.random()) # 0.13436424411240122 print(random.randint(1,10)) # 2 ``` ## Secrets Módulo que ofrece aleatoriedad para uso en claves, tokens, autentificación, etc. Son algoritmos mas lentos, pero ofrecen aleatoriedad 'verdadera' ```python import secrets # Número aleatorio entre 0 y 9 a = secrets.randbelow(10) print(a) # 8 # Número aleatorio entre 0 y 15 (0000 - 1111) a = secrets.randbits(4) print(a) # 7 lista = list("ABCDEFGHIJK") a = secrets.choice(lista) print(a) # H ``` ## numpy Para trabajar con arrays ```python import numpy as np # Arreglo de floats aleatorios de una dimensión con rango 3 a = np.random.rand(3) print(a) # [0.84579967 0.02253312 0.11607143] # Arreglo de floats aleatorios de 3 dimensiones con rango 3 a = np.random.rand(3, 3) print(a) # [[0.68013638 0.81510406 0.90462866] # [0.92490363 0.585091 0.57115841] # [0.42848118 0.8946414 0.57214838]] # Arreglo de enteros aleatorios de 3 dimensiones con rango, limite final excluido # la tupla especifica la cantidad de elementos y las dimensiones del arreglo a = np.random.randint(0, 10, (3, 4)) print(a) # [[8 2 9 5] # [0 3 3 3] # [0 2 9 9]] # Reordenar arreglo de forma aleatoria arreglo = np.array([[1,2,3], [4,5,6], [7,8,9]]) np.random.shuffle(arreglo) print(arreglo) # [[4 5 6] # [1 2 3] # [7 8 9]] # Semillas generadoras (diferentes a las del módulo random de python) np.random.seed(1) print(np.random.rand(3,3)) # [[4.17022005e-01 7.20324493e-01 1.14374817e-04] # [3.02332573e-01 1.46755891e-01 9.23385948e-02] # [1.86260211e-01 3.45560727e-01 3.96767474e-01]] np.random.seed(1) print(np.random.rand(3,3)) # [[4.17022005e-01 7.20324493e-01 1.14374817e-04] # [3.02332573e-01 1.46755891e-01 9.23385948e-02] # [1.86260211e-01 3.45560727e-01 3.96767474e-01]] ```