#include <stdio.h>
#include <stdint.h>
#include <time.h>

static inline uint32_t ROR(uint32_t x, int n)
{
	        return (x >> n) + (x << ((sizeof(x)*8)-n));
}

uint32_t _random_seeds[1][2];

uint32_t Random(void)
{
	uint32_t s = _random_seeds[0][0];
	uint32_t t = _random_seeds[0][1];
	_random_seeds[0][0] = s + ROR(t ^ 0x1234567F, 7);//+1;
	return _random_seeds[0][1] = ROR(s, 3);//-1;
}

int main()
{
	int i;
	_random_seeds[0][0] = _random_seeds[0][1] = time(NULL);
	for (i = 0; i < 10000; i++) {
		uint32_t r = Random();
		printf("%u\n", r);
	}
	return 0;
}
