I am learning treap nowadays and I came to an implementation in which the guy used some weird way to generate random numbers for priority.I am not able to get it.Would anybody mind explaining me how does it work.
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);
}
};