
PRNG 16 C
It's the fastest 16-bit, sequential PRNG versus JSF16 and PCG16.
Algorithm
Source
#include <stdint.h>
struct eightomic_prng_16_c_s {
uint16_t a;
uint16_t b;
uint16_t c;
uint16_t d;
uint16_t e;
};
uint16_t eightomic_prng_16_c(struct eightomic_prng_16_c_s *s) {
s->a += s->d;
s->b = ((s->b << 6) | (s->b >> 10)) + s->c;
s->c += s->e;
s->d = s->b;
s->e -= s->a + 1;
return s->c;
}
License
It's free and open source.
Reference
eightomic_prng_16_c() is the randomization function that accepts the following argument.
1: s is the struct eightomic_prng_16_c_s pointer with 5 16-bit unsigned integers s->a, s->b, s->c, s->d and s->e. Each must be initialized with any combination of values.
The return value data type is uint16_t.
It returns the 16-bit unsigned integer pseudorandom number result.
Explanation
It's currently in development and the full explanation is coming soon.
When a cycle of trillions of pseudorandom numbers isn't required on a 32-bit or 64-bit processor, Eightomic PRNG 16 B is a faster alternative with a cycle of 8-16 million high-quality, pseudorandom 16-bit numbers.