http://www.catnet.ne.jp/kouno/c_faq/c13.html#16
rand() / (RAND_MAX / N + 1)

これ↑ RAND_MAX が INT_MAX なら N=1 の時にオーバーフローするから、
こう↓書くべきじゃないの?

rand() / (RAND_MAX / N + 1U)