longで、範囲指定した乱数を得るにはどうすればいいの?

ところで、Javaの乱数ではnextInt(int)というメソッドがあるので、intだと範囲指定して乱数を得ることができます。
けどもnextLong(long)というメソッドはないので、longだと範囲指定して乱数を得ることができません。
なにも考えなければ

nextLong() % n;

などとすると範囲を抑えれるのですけど、乱数としてちゃんとなるためには、もう少し頭を使ったほうがいいような気がします。
ということで、Javaでlongで範囲指定した乱数を求めるにはどうするのがいいんでしょう?