Core: SeedRandom

git-svn-id: svn://ultimatepp.org/upp/trunk@6235 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2013-08-07 11:14:03 +00:00
commit ac16e30a46
3 changed files with 23 additions and 1 deletions

View file

@ -59,6 +59,7 @@ struct MTrand {
int mti; /* mti==N+1 means mt[N] is not initialized */
dword mag01[2];
void seed();
void init_genrand(dword s);
void init_by_array(dword *init_key, int key_length);
dword genrand();
@ -158,6 +159,11 @@ MTrand::MTrand()
mti = N + 1;
mag01[0] = 0;
mag01[1] = MATRIX_A;
seed();
}
void MTrand::seed()
{
dword seed[1024];
#ifdef PLATFORM_POSIX
int fd = open("/dev/urandom", O_RDONLY);
@ -186,6 +192,14 @@ thread__ MTrand *sRng;
thread__ byte sRb[sizeof(MTrand)];
#endif
void SeedRandom()
{
if(!sRng) {
sRng = new(sRb) MTrand;
}
sRng->seed();
}
void SeedRandom(dword *seed, int len){
if(!sRng) {
sRng = new(sRb) MTrand;