C言語で0からnの範囲の乱数を得るとき、
rand() % (n + 1)
と書くと乱数の質が悪くなるそうなのですが、それはなぜなのでしょうか。
また、0からnの範囲で質の良い乱数を得るにはどうすればいいのでしょうか。