Code:

#define C64 unsigned long long
C64 hash_rand() {
C64 r = 0;
unsigned long r1, r2= 0;
for (unsigned int i = 0; i < 32; ++i) {
r1 ^= rand() << i;
r2 ^= rand() << i;
}
r = r1 | (C64) r2 << 32;
printf("R1=%ul R2=%ul Hash_rand=%ull\n",r1,r2,r);
return r;
}

A few result:

Code:

R1=687865691l R2=988029917l Hash_rand=687865691ll
R1=591616934l R2=454174817l Hash_rand=591616934ll
R1=930215157l R2=214394930l Hash_rand=930215157ll
R1=2936190921l R2=1135713105l Hash_rand=2936190921ll
R1=1256449038l R2=885147166l Hash_rand=1256449038ll
R1=1912210059l R2=2292338960l Hash_rand=1912210059ll
R1=1680048649l R2=2457515678l Hash_rand=1680048649ll
R1=1436782960l R2=737207696l Hash_rand=1436782960ll
R1=3008899124l R2=445239638l Hash_rand=3008899124ll
R1=1501323191l R2=1232787536l Hash_rand=1501323191ll
R1=1555984070l R2=213463547l Hash_rand=1555984070ll
R1=278736328l R2=2676575472l Hash_rand=278736328ll
R1=1041491509l R2=1880486007l Hash_rand=1041491509ll
R1=2564025414l R2=3808829273l Hash_rand=2564025414ll
R1=943291562l R2=3734505863l Hash_rand=943291562ll
R1=1744278179l R2=3876748683l Hash_rand=1744278179ll
R1=3977573745l R2=1631571305l Hash_rand=3977573745ll
R1=2742987346l R2=1756414339l Hash_rand=2742987346ll

Why I am not getting "hash_rand" as the combination of r1 and r2?

thx

FS