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;
}