Debe distinguir dos cosas: números aleatorios y pseudoaleatorios. Los números verdaderamente aleatorios representan la aleatoriedad real y no se pueden predecir. Los números pseudoaleatorios son una secuencia de números que se puede predecir conociendo la semilla y el número de secuencia. Tenga cuidado al respecto y nunca use valores pseudoaleatorios mientras genera algo que debería ser un secreto real (por ejemplo, las claves criptográficas). Los sistemas Unix generan cosas cercanas a números verdaderamente aleatorios (toman entropía de pulsaciones de teclas, paquetes de red, …) en / dev / random. Pero idealmente deberías usar un rng físico externo.
En cuanto a la parte más fácil: pseudorandoms: hay 2 funciones pseudoaleatorias estándar en libc: la más antigua: rand () y la moderna: random (). Ambos obtendrán una secuencia fija de valores a menos que se inicialicen con alguna semilla. Esto se hace con las funciones srand () / srandom () respectivamente. Por lo general, la semilla utilizada es simplemente la hora actual. Entonces es algo así
#include
#include
…
…
int main ()
{
srandom (tiempo (NULL));
…
…
x = aleatorio ();
}
- Plegamiento de proteínas: ¿Qué algoritmos se usan en el juego Foldit?
- ¿Cuál es la diferencia entre un algoritmo basado en restricciones y un algoritmo basado en reglas?
- ¿Cuál es la forma lógica de resolver el problema SPOJ 'Palin'?
- ¿Por qué un algoritmo de búsqueda binaria se considera más importante que la búsqueda lineal menos complicada?
- ¿Debería centrarme en el aprendizaje de algoritmos y estructuras de datos en profundidad, o aprender una habilidad como desarrollo web o desarrollo móvil usando Nanodegree?