Bob+Jenkins

an American software developer, M.Sc. in computer science from Carnegie Mellon University, Microsoft and former [|Oracle] employee. At Microsoft, he worked in the //Cosmos// team, and under Andrew Kadatch on the //Cosmos// storage distributed [|file system] , written by Andrew in C++, and on the //Scope// query language. He was Oracle's resident expert on [|hash functions], and he designed and published various pseudorandom number generators and hash functions for hash table lookup , competing with Paul Hsieh. || toc =RKISS= Bob Jenkins' small noncryptographic PRNG approach is suited for Zobrist Hashing. Heinz van Saanen's RKISS as used in Stockfish since version 2.0 uses almost the same code despite embedded it into a C++ class and initialization. Van Saanen admitted he took an obviously free and quite raw C-snippet from a random-related newsgroup long time ago. When turned this to a functional C++-class years later he could not find the initial source any longer, and gave credit to George Marsaglia as inventor of the RNG-Kiss-family. This is Bob's 64 bit code :
 * Home * People * Bob Jenkins**
 * [[image:bob_portrait.jpg link="http://burtleburtle.net/bob/other/resume3.html"]] ||~  || **Robert John Jenkins Jr.**,
 * Bob Jenkins ||~ ||^ ||

code format="cpp" typedef unsigned long long u8; typedef struct ranctx { u8 a; u8 b; u8 c; u8 d; } ranctx;

u8 ranval( ranctx *x ) { u8 e = x->a - rot(x->b, 7); x->a = x->b ^ rot(x->c, 13); x->b = x->c + rot(x->d, 37); x->c = x->d + e;   x->d = e + x->a; return x->d; }
 * 1) define rot(x,k) (((x)<<(k))|((x)>>(64-(k))))

void raninit( ranctx *x, u8 seed ) { u8 i;   x->a = 0xf1ea5eed, x->b = x->c = x->d = seed; for (i=0; i<20; ++i) { (void)ranval(x); } } code

=Selected Publications=
 * Bob Jenkins (**1997**). //Hash functions//. [|Dr. Dobb's Journal], September 1997
 * [|Ronnie Chaiken], Bob Jenkins, [|Per-Åke Larson], [|Bill Ramsey], [|Darren Shakib], [|Simon Weaver], [|Jingren Zhou] (**2008**). //[|SCOPE: Easy and Efficient Parallel Processing of Massive Data Sets]//. Microsoft Corporation, [|pdf]
 * Andrew Kadatch, Bob Jenkins (**2010**). //[|Everything we know about CRC but afraid to forget]//.

=External Links=
 * [|Robert John Jenkins Junior from Wikipedia]
 * [|Bob Jenkins' Web Site]
 * [|Random Number Results]
 * [|Hash Functions and Block Ciphers]
 * [|A Hash Function for Hash Table Lookup] updated [|Dr. Dobb's] article
 * [|Jenkins hash function from Wikipedia]
 * [|Perfect Hashing]

=References= =What links here?= include page="Bob Jenkins" component="backlinks" limit="40"
 * Up one level**