>>661
順番を変えて考えるべし。

rand() / (double)RAND_MAX とした場合、
rand() が 0 〜 RAND_MAX の値を返すのだから、
rand() / (double)RAND_MAX は 0 〜 1 の値になる。
このまま (max-min+1.0) をかけると 0 〜 max-min+1 の値になり、
min を足すと 0 〜 max+1 の値になる。
rand() が RAND_MAX を返した時だけ、max+1 が現れてしまうことになるわけだ。

これに対し、rand() / (1.0+RAND_MAX) とした場合は
0 〜 RAND_MAX/(1+RAND_MAX) の値になる。
RAND_MAX/(1+RAND_MAX) は 1 より少し小さくて、
上記のような問題は発生しない。