Initialize a pseudo-random number generator
#include <stdlib.h> char* initstate( unsigned int seed, char* state, size_t size );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
This function is in libc.a, but not in libc.so (in order to save space). |
The initstate() initializes the given state array for future use when generating pseudo-random numbers.
This function uses the size argument to determine what type of random-number generator to use; the larger the state array, the more random the numbers. Values for the amount of state information are 8, 32, 64, 128, and 256 bytes. Other values greater than 8 bytes are rounded down to the nearest one of these values. For values smaller than 8, random() uses a simple linear congruential random number generator.
Use this function in conjunction with the following:
If you haven't called initstate(), random() behaves as though you had called initstate() with a seed of 1 and a size of 128.
After initialization, you can restart a state array at a different point in one of these ways:
A pointer to the previous state array, or NULL if an error occurred.
#include <stdlib.h> #include <stdio.h> #include <time.h> static char state1[32]; int main() { initstate( time(NULL), state1, sizeof(state1)); setstate(state1); printf("%d0\n", random()); return EXIT_SUCCESS; }
Safety: | |
---|---|
Cancellation point | Yes |
Interrupt handler | No |
Signal handler | No |
Thread | No |
drand48(), rand(), random(), setstate(), srand(), srandom()