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