|
@@ -1,10 +1,3 @@
|
|
|
-/*
|
|
|
- * random.c - Copyright © 2011 Szabolcs Nagy
|
|
|
- * Permission to use, copy, modify, and/or distribute this code
|
|
|
- * for any purpose with or without fee is hereby granted.
|
|
|
- * There is no warranty.
|
|
|
-*/
|
|
|
-
|
|
|
#include <stdlib.h>
|
|
|
#include <stdint.h>
|
|
|
#include "libc.h"
|
|
@@ -12,11 +5,7 @@
|
|
|
/*
|
|
|
this code uses the same lagged fibonacci generator as the
|
|
|
original bsd random implementation except for the seeding
|
|
|
-
|
|
|
-different seeds produce different sequences with long period
|
|
|
-(other libcs seed the state with a park-miller generator
|
|
|
-when seed=0 some fail to produce good random sequence
|
|
|
-others produce the same sequence as another seed)
|
|
|
+which was broken in the original
|
|
|
*/
|
|
|
|
|
|
static uint32_t init[] = {
|
|
@@ -98,6 +87,7 @@ char *initstate(unsigned seed, char *state, size_t size) {
|
|
|
n = 63;
|
|
|
x = (uint32_t*)state + 1;
|
|
|
__srandom(seed);
|
|
|
+ savestate();
|
|
|
UNLOCK(lock);
|
|
|
return old;
|
|
|
}
|