結局、ちょっと勘違いがあって、nextInt(int)と同じことをやればよかったことがわかりました。
long nextLong(long n){ long bits, value; do{ bits = r.nextLong(); if(bits < 0) bits -= Long.MIN_VALUE; val = bits % n; } while (bits - val + (n - 1); return val; }
ところでこの、bit-val+(n-1)っていう判定、すごく賢いんですけど、誰が考えたんでしょう?
やっぱArt of Computer Programmingに載ってたりして、クヌース先生が考えたってことなんでしょうか?