Sha256: 52d8f186cd6efbbfd2e95f1cf4680f0dfc74cd369df490100bb21d9921107929
Contents?: true
Size: 1.07 KB
Versions: 51
Compression:
Stored size: 1.07 KB
Contents
/*Written by Timothy B. Terriberry (tterribe@xiph.org) 1999-2009 public domain. Based on the public domain implementation by Robert J. Jenkins Jr.*/ #if !defined(_isaac_H) # define _isaac_H (1) typedef struct isaac_ctx isaac_ctx; #define ISAAC_SZ_LOG (8) #define ISAAC_SZ (1<<ISAAC_SZ_LOG) #define ISAAC_SEED_SZ_MAX (ISAAC_SZ<<2) /*ISAAC is the most advanced of a series of Pseudo-Random Number Generators designed by Robert J. Jenkins Jr. in 1996. http://www.burtleburtle.net/bob/rand/isaac.html To quote: No efficient method is known for deducing their internal states. ISAAC requires an amortized 18.75 instructions to produce a 32-bit value. There are no cycles in ISAAC shorter than 2**40 values. The expected cycle length is 2**8295 values.*/ struct isaac_ctx{ unsigned n; unsigned r[ISAAC_SZ]; unsigned m[ISAAC_SZ]; unsigned a; unsigned b; unsigned c; }; void isaac_init(isaac_ctx *_ctx,const void *_seed,int _nseed); unsigned isaac_next_uint32(isaac_ctx *_ctx); unsigned isaac_next_uint(isaac_ctx *_ctx,unsigned _n); #endif
Version data entries
51 entries across 51 versions & 1 rubygems