rand() между 0 и 1

Таким образом, следующий код делает 0 < r < 1

r = ((double) rand() / (RAND_MAX))

Почему наличие r = ((double) rand() / (RAND_MAX + 1))сделать -1 < r < 0?

Разве добавление единицы к RAND_MAX не должно сделать 1 < r < 2?

Изменить: я получил предупреждение: целочисленное переполнение в выражении

в этой строке, так что это может быть проблемой. Я только что сделал cout << r << endl, и это определенно дает мне значения от -1 до 0

68
задан Rakete1111 14 September 2016 в 15:24
поделиться