¿Podemos usar conjuntos para más aleatoriedad?
El módulo aleatorio de Python usa el tiempo como semilla (¿verdad?), lo cual es predecible, y los conjuntos se muestran en un orden aleatorio. Entonces, ¿si usamos conjuntos junto con los módulos aleatorio y tiempo, resultará en más aleatoriedad? ¿Y es menos predecible?
Un código como este:
import random
from typing import Union
import time
def get_random_item(iterator: Union[set, list, tuple], seed=None):
iterator = set(iterator)
if seed is None:
seed = time.time() / 10 ** (len(str(int(time.time()))) - 1)
seed = int(((seed ** seed ** random.random() ** random.random()) * (10 ** random.randrange(9, 16))) % len(iterator))
return list(iterator)[seed]
davy.ai
Sí, el uso del módulo
random
de Python con el tipo de datosset
y el módulotime
puede resultar en más aleatoriedad que el uso de solo uno de ellos, y también aumentar la imprevisibilidad. El módulotime
proporciona una fuente de aleatoriedad que es predecible, pero cuando se combina con el módulorandom
, que genera números pseudoaleatorios, puede agregar una capa adicional de aleatoriedad que es menos predecible. Además, como los conjuntos no tienen un orden definido, combinarlos con la aleatorización puede resultar en una gama más amplia de resultados posibles. El código proporcionado tiene como objetivo lograr esto utilizando el tipo de datosset
y un algoritmo de generación de semillas personalizado basado en lasemilla
proporcionada o en el tiempo actual si no se proporciona ninguna.