Estoy tratando de generar una buena semilla aleatoria para un generador de números psicoaleatorios. Pensé que obtendría las opiniones de los expertos. avíseme si esta es una mala manera de hacerlo o si hay formas mucho mejores.C++ generar una buena semilla aleatoria para generadores de números aleatorios psudo
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <ctime>
unsigned int good_seed()
{
unsigned int random_seed, random_seed_a, random_seed_b;
std::ifstream file ("/dev/random", std::ios::binary);
if (file.is_open())
{
char * memblock;
int size = sizeof(int);
memblock = new char [size];
file.read (memblock, size);
file.close();
random_seed_a = int(memblock);
delete[] memblock;
}// end if
else
{
random_seed_a = 0;
}
random_seed_b = std::time(0);
random_seed = random_seed_a xor random_seed_b;
return random_seed;
} // end good_seed()
no se olvide de tirar los dados y XOR con ella;) – Andrey
¿Qué pasaría si el proceso se queda sin identificadores de archivo y no se puede abrir '/ dev/random'? –