Xorshift 一代

对于有缺陷的 rand() 程序来说,一个简单易用的替代方法是 xorshift ,这是 George Marsaglia 发现的一类伪随机数生成器。xorshift 生成器是最快的非加密安全随机数生成器之一。 xorshift Wikipedia 页面上提供了更多信息和其他示例实现

示例实现

#include <stdint.h>

/* These state variables must be initialised so that they are not all zero. */
uint32_t w, x, y, z;

uint32_t xorshift128(void) 
{
    uint32_t t = x;
    t ^= t << 11U;
    t ^= t >> 8U;
    x = y; y = z; z = w;
    w ^= w >> 19U;
    w ^= t;
    return w;
}