mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-10-06 00:30:10 -06:00
Core: SeedRandom
git-svn-id: svn://ultimatepp.org/upp/trunk@6235 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
6eb275ff1f
commit
ac16e30a46
3 changed files with 23 additions and 1 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue