Apuntes_Python/02_conceptos/12_random_numbers/b_modulo_secrets.py
2022-12-24 22:41:20 -03:00

64 lines
1.7 KiB
Python
Executable File

"""
Secrets, módulo que ofrece aleatoriedad para uso en claves, tokens, autentificación, etc.
Son algoritmos mas lentos, pero ofrecen aleatoriedad 'verdadera'
"""
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
"""
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]]