Здесь ошибка в другую сторону: вероятно, идея была в том, что
выражение rand()/(RAND_MAX/j) с равной вероятностью принимает
значения от 0 до j-1, а других значений не принимает, но верна
только первая часть. На самом деле, из-за того что целочисленное
деление округляет (RAND_MAX/j) вниз, второе деление может дать
значение, большее чем хотелось.