Introducción
Los números aleatorios en informática se utilizan para criptografía, simulación, muestreo, diseño y juegos. En el pasado ha aumentado la necesidad de más y más aleatoriedad. Los desarrolladores buscan más y más aleatoriedad. Este proyecto se basa en la generación de números aleatorios mediante programación simple en un sistema local.
Características
La fuente de aleatoriedad disponible para una computadora personal como las computadoras portátiles incluye:
- La luz y la escena circundantes.
- El sonido o ruido del entorno
- La información TCP para la red.
- El RTT de una red específica, dependiendo de la congestión de la red
- hora del sistema
- Retraso de programación sobre núcleo o multinúcleo
El proyecto tiene como objetivo extraer la aleatoriedad de todos estos factores para generar números aleatorios. Todos estos métodos terminan dando una lista de diferentes números, todos estos números se reducen a formas manejables usando funciones hash como CWCash, PJWhash y SHA1 hash. Además, todos estos métodos llevan algo de tiempo, por lo que usar estos procesos en una iteración puede llevar mucho tiempo, por lo tanto, el proyecto los usa para generar una verdadera semilla aleatoria y usar el algoritmo conocido como Blum Blum Shub para generar una serie de números aleatorios. Blum Blum Shub necesita dos números primos grandes para su ejecución. Aquí, los dos números primos se generan eligiendo aleatoriamente un número aleatorio y comparándolos con una serie de pruebas de primalidad de Fermat.. (Tomamos un número aleatorio de 50 dígitos y ejecutamos la prueba de Fermat 10 veces con diferentes números de 40 dígitos)
Implementación
https://github.com/adeepkit01/RNG
Herramientas de software
Aunque todo el proyecto se puede implementar en python, el repositorio de github anterior utiliza diferentes lenguajes (Python, Java y C) en función de sus puntos fuertes. La implementación necesita las bibliotecas de python pyaudio, wave, cv2 y numpy
Esta idea es aportada por Ankit Deepak . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA