Random

Based on: http://www.electro-tech-online.com/threads/ultra-fast-pseudorandom-number-generator-for-8-bit.124249/

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
unsigned int _x;
unsigned int _a;
unsigned int _b; 
unsigned int _c; 
void initRandom(unsigned int s1,unsigned int s2,unsigned int s3, unsigned int x0)
{
	_x = x0;
	_a = s1;
	_b = s2;
	_c = s3;
	_x++;
	_a = (_a^_c^_x);
	_b = (_b+_a);
	_c = ((_c+(_b>>1))^_a);
}

unsigned int random()
{
	_x++;
	_a = (_a^_c^_x);
	_b = (_b+_a);
	_c = ((_c+(_b>>1))^_a);
	return _c;
}