UCT: Put move stats to struct move_stats (node->u)
[pachi.git] / random.c
blob26d269c2e185f857ee8f764cd4d59112f066367a
1 #include <stdio.h>
3 #include "random.h"
6 /* Simple Park-Miller */
8 static unsigned long seed = 29264;
10 void
11 fast_srandom(unsigned long seed_)
13 seed = seed_;
16 unsigned long
17 fast_random(unsigned int max)
19 unsigned long hi, lo;
20 lo = 16807 * (seed & 0xffff);
21 hi = 16807 * (seed >> 16);
22 lo += (hi & 0x7fff) << 16;
23 lo += hi >> 15;
24 seed = (lo & 0x7fffffff) + (lo >> 31);
25 return ((seed & 0xffff) * max) >> 16;