Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdint.h>
- static uint32_t rs [4];
- void seedrand (uint32_t seed)
- {
- rs [0] = seed;
- rs [1] = seed << 1;
- rs [2] = (rs [0] ^ (rs [0] << 3)) ^ (rs [1] ^ (rs [1] << 16));
- rs [3] = (rs [0] ^ (rs [0] << 6)) ^ (rs [2] ^ (rs [2] << 10));
- printf ("Using %u, %u, %u, and %u as seeds.\n", rs [0], rs [1], rs [2], rs [3]);
- return;
- }
- uint32_t getrand (void)
- {
- uint32_t tmp;
- tmp = rs [0] ^ (rs [0] << 5);
- rs [0] = rs [1];
- rs [1] = rs [2];
- rs [2] = rs [3];
- return rs [3] = (rs [3] ^ (rs [3] >> 12)) ^ (tmp ^ (tmp >> 16));
- }
- int results [256];
- int main (void)
- {
- int i;
- printf ("Testing random number generator\n");
- seedrand (time (NULL));
- for (i = 0; i < 7000000; i++)
- results [getrand () & 255] ++;
- for (i = 0; i < 256; i++)
- printf ("%i: %i\n", i, results [i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement