私は最近treapを学んでいますが、優先順位のために乱数を生成するために奇妙な方法を使用した実装に行き着きました.私はそれを取得できません.
struct xor_128
{
ull x,y,z,w;
xor_128(): x(1234567892851659llu), y(3631515817918578190llu),z(711737163082llu), w(916951651388197517llu) {}
ull next()
{
ull t=x^(x<<11);// ull is unsigned long long he used
x=y;
y=z;
z=w;
return w=w^(w>>19)^t^(t>>8);
}
};