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