我想爲一個psudo隨機數生成器生成一個好的隨機種子。我想我會得到專家的意見。讓我知道這是否是一種不好的做法,或者是否有更好的方法。C++爲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()
別忘了擲骰子和異或與它;) – Andrey 2010-04-14 20:20:10
如果你的過程運行的文件句柄,並無法打開'的/ dev/random'會發生什麼? – 2010-04-14 20:21:16